在 C++ 中,純虛函數是在基類中聲明的虛函數,它沒有定義具體的實現,而是用= 0
表示。派生類必須覆蓋這個純虛函數,否則它們也將成為抽象類,無法實例化。
要在 C++ 中調用一個純虛函數,您需要執行以下步驟:
確保您有一個指向基類的指針或引用,該指針或引用可以指向派生類對象。這是因為純虛函數是在基類中聲明的,但它們在派生類中實現。
使用基類指針或引用調用純虛函數。由于純虛函數在基類中沒有定義,所以實際調用將在運行時解析到派生類中的實現。
下面是一個簡單的示例:
#include <iostream>
// 基類 Shape
class Shape {
public:
// 聲明純虛函數 area()
virtual double area() const = 0;
};
// 派生類 Circle,繼承自 Shape
class Circle : public Shape {
public:
// 實現純虛函數 area()
double area() const override {
return 3.14 * radius * radius;
}
private:
double radius;
};
int main() {
// 創建一個指向 Shape 的指針,指向一個 Circle 對象
Shape* shape_ptr = new Circle{5.0};
// 使用基類指針調用純虛函數 area()
std::cout << "The area of the shape is: " << shape_ptr->area() << std::endl;
delete shape_ptr; // 釋放內存
return 0;
}
在這個示例中,我們定義了一個名為 Shape
的基類,其中包含一個純虛函數 area()
。然后,我們創建了一個名為 Circle
的派生類,繼承自 Shape
,并實現了 area()
函數。在 main()
函數中,我們創建了一個指向 Shape
的指針,并將其指向一個 Circle
對象。然后,我們使用基類指針調用 area()
函數,實際調用將在運行時解析到 Circle
類中的實現。