编辑代码

#include <iostream>  
using namespace std;  
  
class Point {  
public:  
    Point() {}  
      
    // 声明一个纯虚函数area,要求派生类必须实现  
    virtual double area() const = 0;  
      
    // 虚析构函数,用于正确释放派生类对象  
    virtual ~Point() {  
        cout << "executing Point destructor" << endl;  
    }  
};  
  
class Circle : public Point {  
private:  
    double radius; // 圆的半径  
  
public:  
    Circle(double r) : radius(r) {}  
      
    // 实现基类中的纯虚函数area  
    double area() const override {  
        return 3.14159 * radius * radius;  
    }  
      
    ~Circle() {  
        cout << "executing Circle destructor" << endl;  
    }  
};  
  
int main() {  
    Point* p = new Circle(5.0); // 创建一个Circle对象,并通过Point指针指向它  
    cout << "Area of the circle: " << p->area() << endl; // 调用Circle的area函数  
    delete p; // 释放对象  
    return 0;  
}