#include class Super { public: Super() { printf("super\n"); } void method() { printf("super method\n"); } virtual void vmethod() { printf("virtual super method\n"); } }; class Sub :public Super { public: Sub() { printf("sub\n"); } void method() { printf("sub method\n"); } virtual void vmethod() { printf("virtual sub method\n"); } }; int main() { Sub a; Super* b = &a; Super c; a.method(); c.method(); b->method(); c.vmethod(); b->vmethod(); return 0; }