在C++中,抽象類是一種不能被實例化的類,它通常包含一個或多個純虛函數
#include <iostream>
// 定義一個抽象類 Shape
class Shape {
public:
// 構造函數
Shape() {
std::cout << "Shape 構造函數被調用" << std::endl;
}
// 虛析構函數
virtual ~Shape() {
std::cout << "Shape 析構函數被調用" << std::endl;
}
// 純虛函數,計算面積
virtual double area() const = 0;
// 純虛函數,計算周長
virtual double perimeter() const = 0;
};
// 定義一個派生類 Circle,繼承自 Shape
class Circle : public Shape {
public:
// 構造函數
Circle(double radius) : radius_(radius) {
std::cout << "Circle 構造函數被調用" << std::endl;
}
// 析構函數
~Circle() {
std::cout << "Circle 析構函數被調用" << std::endl;
}
// 實現純虛函數 area
double area() const override {
return 3.14159 * radius_ * radius_;
}
// 實現純虛函數 perimeter
double perimeter() const override {
return 2 * 3.14159 * radius_;
}
private:
double radius_;
};
int main() {
// 由于 Shape 是抽象類,不能實例化對象
// Shape shape; // 錯誤
// 創建一個 Circle 對象
Circle circle(5.0);
// 調用 area 和 perimeter 方法
std::cout << "面積: " << circle.area() << std::endl;
std::cout << "周長: " << circle.perimeter() << std::endl;
return 0;
}
在這個例子中,我們定義了一個抽象類 Shape
,它包含兩個純虛函數 area()
和 perimeter()
。然后我們定義了一個派生類 Circle
,繼承自 Shape
,并實現了這兩個純虛函數。在 main()
函數中,我們創建了一個 Circle
對象,并調用了它的 area()
和 perimeter()
方法。注意,我們不能創建 Shape
類的對象,因為它是一個抽象類。