1 struct X { 2 virtual int f() = 0; 3 virtual int g() = 0; 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 Y y; 25 return fun(y) + sizeof(X); 26 } 27