#include class A { public: virtual void foo() { std::cout << "A::foo" << std::endl; } void bar() { std::cout << "A::bar" << std::endl; } }; class B : public A { public: void foo() override { std::cout << "B::foo" << std::endl; } void bar() { std::cout << "B::bar" << std::endl; } }; int main() { A* a = new A(); B* b = new B(); A* c = b; a->foo(); b->foo(); c->foo(); a->bar(); b->bar(); c->bar(); return 0; }