/* abc daaa faf dakkdakk abaa */ #include #include "a.h" struct Middle : public Parent { void foo() override {} }; struct DerivedA : public Middle { void foo() override {} }; struct DerivedB : public Middle { void foo() override {} }; struct Derived2B : public DerivedB { void foo() override {} }; struct Derived2C : public DerivedB { void foo() override; }; void Derived2C::foo() {} void User() { Parent p; Middle m; DerivedA da; DerivedB db; Derived2B d2b; p.foo(); m.foo(); da.foo(); db.foo(); d2b.foo(); } struct Saaaaaa {}; struct S2 { S2() {} int a; int b; }; struct MyFoo { std::string name; }; void f() { S2 s2; s2.a += 10; s2.b -= 100; s2.b -= 5; MyFoo f; // f.name = 10; f.name = "okay"; MyFoo f2; f2.name = "yes!"; } void baz(); void foo(); void foo(); void foo() {} /**/ void caller() { MyFoo fff; fff.name = "this name"; baz(); baz(); baz(); foo(); foo(); foo(); }