#include <iostream>
using namespace std;
class Point {
public:
Point() {}
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) {}
double area() const override {
return 3.14159 * radius * radius;
}
~Circle() {
cout << "executing Circle destructor" << endl;
}
};
int main() {
Point* p = new Circle(5.0);
cout << "Area of the circle: " << p->area() << endl;
delete p;
return 0;
}