1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
struct Foo { virtual ~Foo() {} virtual int test() const = 0; }; struct Bar : Foo { ~Bar() override {} int test() const override { return 0; } }; int test(Foo const& foo) { return foo.test(); } int main() { Bar const bar; return test(bar); }