#include using namespace std; class A { public : virtual int f(void) { return 'A'; } // Code 'A' : 65 A(void) { cout << " A: " << f() << endl; } virtual ~A(void) { cout << "~A: " << f() << endl; } }; class B : public A { public : virtual int f(void) { return 'B'; } // Code 'B' : 66 B(void) { cout << " B: " << f() << endl; } virtual ~B(void) { cout << "~B: " << f() << endl; } }; int main(void) { A* pa; pa = new A; // A: 65 delete pa; // ~A: 65 pa = new B; // A: 65 B: 66 delete pa; // ~B: 66 ~A: 65 return 0; }