c++中抽象类如何使用类对象的方式进行有参构造
时间: 2024-03-20 15:45:16 浏览: 51
C++抽象类 实用例子
5星 · 资源好评率100%
在C++中,抽象类不能被实例化,也不能直接调用构造函数。但是,我们可以使用抽象类的指针或引用来操作抽象类对象。如果我们想要使用类对象的方式进行有参构造,则可以考虑使用工厂模式。
具体实现方式如下:
1. 在抽象类中定义一个纯虚函数 create,该函数返回一个指向抽象类的指针。
```c++
class AbstractClass {
public:
virtual ~AbstractClass() {}
virtual AbstractClass* create(int param) = 0;
virtual void doSomething() = 0;
};
```
2. 在子类中实现 create 函数,返回该子类对象的指针。
```c++
class SubClass : public AbstractClass {
public:
SubClass(int param) {
// 进行有参构造
}
AbstractClass* create(int param) {
return new SubClass(param);
}
void doSomething() {
// 实现具体的行为
}
};
```
3. 在工厂类中定义一个静态函数,该函数接收一个参数,根据参数返回相应的子类对象指针。
```c++
class Factory {
public:
static AbstractClass* createObject(int type, int param) {
switch (type) {
case 1:
return new SubClass(param);
// 其他子类...
default:
return nullptr;
}
}
};
```
4. 使用工厂类创建对象。
```c++
AbstractClass* obj = Factory::createObject(1, 10);
```
这样,我们就可以通过工厂模式,间接地使用类对象的方式进行有参构造了。
阅读全文