#include class A { public: void f() { std::cout << "A::f" << std::endl; } virtual void g() { std::cout << "A::g" << std::endl; } }; class B : public A { public: void f() { std::cout << "B::f" << std::endl; } virtual void g() { std::cout << "B::g" << std::endl; } }; int main(int argc, char** argv) { A a; B b; A* aPtr = &a; A* bPtr = &b; aPtr->f(); aPtr->g(); bPtr->f(); bPtr->g(); return 0; }