class A { public: virtual void talk() { printf("A "); } virtual ~A(){} }; class B: public A { public: // using virtual is not really necessary here, but it's good for clarity. virtual void talk() { printf("B "); } };