class A { public: virtual int foo() { return 1; } virtual ~A () = default; A() = default; }; class B : public A { public: virtual int foo() { return 2; } virtual ~B () = default; B() = default; }; int main() { A* a = new B(); a->foo(); // break here return 0; // break here }