在 C++ 中,可以在純虛類中定義函數的實現。純虛類是包含至少一個純虛函數的抽象類,而純虛函數是在基類中聲明但沒有實現的虛函數。
以下是在 C++ 中在純虛類中定義函數的方法:
#include <iostream>
class AbstractClass {
public:
// 純虛函數
virtual void pureVirtualFunction() = 0;
// 定義一個普通函數
void normalFunction() {
std::cout << "This is a normal function in the abstract class" << std::endl;
}
};
// 在純虛類外部實現純虛函數
void AbstractClass::pureVirtualFunction() {
std::cout << "This is the implementation of the pure virtual function" << std::endl;
}
int main() {
AbstractClass* obj = nullptr;
// AbstractClass obj; // 錯誤,抽象類不能被實例化
// 正確,通過繼承實現純虛函數
class ConcreteClass : public AbstractClass {
public:
// 實現純虛函數
void pureVirtualFunction() override {
std::cout << "This is the implementation of the pure virtual function in the concrete class" << std::endl;
}
};
ConcreteClass concreteObj;
obj = &concreteObj;
// 調用純虛函數和普通函數
obj->pureVirtualFunction();
obj->normalFunction();
return 0;
}
在上面的示例中,我們在抽象類 AbstractClass
中定義了一個普通函數 normalFunction
的實現。然后,在抽象類外部實現了純虛函數 pureVirtualFunction
。最后,在一個具體的類 ConcreteClass
中實現了純虛函數。通過繼承 AbstractClass
,我們可以創建一個具體類對象,并調用純虛函數和普通函數。