在C++中,純虛函數是在基類中聲明的虛函數,它沒有定義具體的實現。派生類必須提供這個純虛函數的具體實現,否則它們也將成為抽象類,無法實例化。
要實現一個純虛函數,只需在基類中的函數聲明后加上 “= 0”。例如:
#include <iostream>
// 基類 Shape
class Shape {
public:
// 聲明一個純虛函數 area()
virtual double area() const = 0;
};
// 派生類 Circle,繼承自 Shape
class Circle : public Shape {
public:
// 實現基類中的純虛函數 area()
double area() const override {
double radius = 5.0;
return 3.14159 * radius * radius;
}
};
int main() {
// 由于 Shape 是抽象類,無法實例化對象
// Shape shape; // 錯誤
// 創建一個指向 Shape 的指針,指向一個派生類(如 Circle)的對象
Shape* shape = new Circle();
// 調用 area() 函數
std::cout << "圓的面積: " << shape->area() << std::endl;
delete shape; // 釋放內存
return 0;
}
在這個例子中,我們定義了一個名為 Shape
的基類,其中包含一個純虛函數 area()
。然后,我們創建了一個名為 Circle
的派生類,繼承自 Shape
,并實現了 area()
函數。在 main()
函數中,我們使用基類指針指向派生類對象,并調用 area()
函數。