#include <iostream> class A{ public: A(){ std::cout << "A"; } virtual ~A(){ std::cout << "~A"; } }; class B: public A{ public: B(){ std::cout << "B"; } ~B(){ std::cout << "~B"; } }; int main(){ A * a = new B(); delete a; return 0; }
AB~A~B
BA~A~B
AB~B~A
AB~B
A~AB~B