xxxxxxxxxx
class Shape {
public:
virtual ~Shape() = default; // virtual destructor
virtual void draw() const = 0; // pure virtual function
};
class Circle : public Shape {
public:
void draw() const override {
// draw circle
}
};
int main() {
Shape* pShape = new Circle;
delete pShape; // calls Circle destructor
return 0;
}
y declaring a virtual destructor for your abstract classes in C++, you can ensure that objects of derived classes are properly destroyed when they are deleted, avoiding memory leaks and other issues.