#include // This base class induces a memory leak // in the derived class! class Base{ public: Base() {} virtual ~Base() { std::cout << "In BASE destructor" << std::endl; } }; class Derived : public Base { public: Derived(int n = 2) : Base(), a(new int[n]) {} ~Derived() { delete [] a; std::cout << "In DERIVED destructor!\n"; } private: int *a; }; main() { Base *D = new Derived(500); delete D; std::cout << "Program terminating" << std::endl; }