在 C++ 中,當一個類含有至少一個純虛函數(shù)時,這個類被稱為抽象類。純虛函數(shù)的聲明語法是在函數(shù)聲明的結(jié)尾處添加 “= 0”。以下是一個包含純虛函數(shù)的抽象類的示例:
#include <iostream>
// 聲明一個抽象類 Shape
class Shape {
public:
// 構(gòu)造函數(shù)
Shape() {
std::cout << "Shape constructor called." << std::endl;
}
// 虛析構(gòu)函數(shù)
virtual ~Shape() {
std::cout << "Shape destructor called." << std::endl;
}
// 純虛函數(shù) area,計算面積
virtual double area() const = 0;
// 純虛函數(shù) perimeter,計算周長
virtual double perimeter() const = 0;
};
// 定義一個繼承自 Shape 的子類 Circle,表示圓形
class Circle : public Shape {
public:
// 構(gòu)造函數(shù),接收半徑作為參數(shù)
Circle(double radius) : radius_(radius) {
std::cout << "Circle constructor called with radius: " << radius_ << std::endl;
}
// 析構(gòu)函數(shù)
~Circle() {
std::cout << "Circle destructor called." << std::endl;
}
// 實現(xiàn)純虛函數(shù) area,計算圓形的面積
double area() const override {
return 3.14159 * radius_ * radius_;
}
// 實現(xiàn)純虛函數(shù) perimeter,計算圓形的周長
double perimeter() const override {
return 2 * 3.14159 * radius_;
}
private:
// 成員變量,表示圓的半徑
double radius_;
};
int main() {
// 由于 Shape 是抽象類,不能創(chuàng)建它的實例
// Shape shape; // 這行代碼會導致編譯錯誤
// 創(chuàng)建一個 Circle 對象
Circle circle(5.0);
// 調(diào)用 area 和 perimeter 函數(shù)
std::cout << "Circle area: " << circle.area() << std::endl;
std::cout << "Circle perimeter: " << circle.perimeter() << std::endl;
return 0;
}
在這個示例中,我們定義了一個抽象類 Shape
,它包含兩個純虛函數(shù) area()
和 perimeter()
。然后我們定義了一個繼承自 Shape
的子類 Circle
,并實現(xiàn)了這兩個純虛函數(shù)。在 main()
函數(shù)中,我們創(chuàng)建了一個 Circle
對象,并調(diào)用了它的 area()
和 perimeter()
函數(shù)。