#include class Base { public: virtual void m () { puts ("base::m"); } virtual void stub () {} }; class Derived : public Base { public: virtual void m () { puts ("derived::m"); } virtual void stub () {} }; int main () { Derived derived_local; Derived *derivedp = &derived_local; Base *basep = &derived_local; derivedp->m (); basep->m (); return 0; }