#include class A { public: virtual void f(); }; class B: virtual public A { public: virtual void f(); }; class C: virtual public A { }; class D: public B, public C { }; main() { D d; A *ap = &d; ap->f(); } void A::f() { cout << "A::f" << endl; } void B::f() { cout << "B::f" << endl; }