1 struct X { 2 virtual int f(); 3 virtual int g(); 4 }; 5 6 struct Y : X { 7 int f() override; 8 int g() override; 9 }; 10 f()11int Y::f() { 12 return 99; 13 } 14 g()15int Y::g() { 16 return 101; 17 } 18 fun(X & x)19int fun(X& x) { 20 return x.f() + x.g(); 21 } 22 foo()23int foo() { 24 X x; 25 Y y; 26 return fun(y) - fun(x) + sizeof(X); 27 } 28