在C++中,抽象类是指包含纯虚函数的类,纯虚函数是通过在函数声明处使用 “= 0” 来声明的虚函数。由于抽象类包含纯虚函数,所以不能被直接实例化。
要解决这个问题,可以通过以下两种方式:
class AbstractClass {
public:
virtual void pureVirtualFunction() = 0;
void nonPureVirtualFunction() {
// 实现非纯虚函数的逻辑
}
};
class ConcreteClass : public AbstractClass {
public:
void pureVirtualFunction() {
// 实现纯虚函数的逻辑
}
};
int main() {
ConcreteClass obj;
obj.pureVirtualFunction();
obj.nonPureVirtualFunction();
return 0;
}
class AbstractClass {
public:
virtual void pureVirtualFunction() = 0;
void nonPureVirtualFunction() {
// 实现非纯虚函数的逻辑
}
};
class ConcreteClass : public AbstractClass {
public:
void pureVirtualFunction() {
// 实现纯虚函数的逻辑
}
};
int main() {
ConcreteClass obj;
AbstractClass* ptr = &obj;
ptr->pureVirtualFunction();
ptr->nonPureVirtualFunction();
return 0;
}
无论使用哪种方式,抽象类都不能被直接实例化,但可以通过子类化或使用指针/引用来解决这个问题。