class Parent{ public: virtual int ReturnInt(); }; class Child : public Parent{ public: int ReturnInt(); } // Parent *p; Child *c = new Child(); p = c; p->ReturnInt(); // <-- never gets called; why not?