在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;
}
無論使用哪種方式,抽象類都不能被直接實例化,但可以通過子類化或使用指針/引用來解決這個問題。