The following code won\'t compile:
class A { public: A(int) {} }; class B: virtual public A { public: B(): A(0) {} }; // most derived class class C
Because it avoids this:
class A { public: A(int) {} }; class B0: virtual public A { public: B0(): A(0) {} }; class B1: virtual public A { public: B1(): A(1) {} }; class C: public B0, public B1 { public: C() {} // How is A constructed? A(0) from B0 or A(1) from B1? };