class A { char a; public: A(char x) : a(x) { } virtual ~A() { } }; class B : virtual public A { char b; public: B(char x) : A('b'), b(x) { } ~B() { } }; class C : virtual public A { char c; public: C(char x) : A('c'), c(x) { } ~C() { } }; class D : virtual public A, public B, public C { char d; public: D(char x) : A('d'), B('d'), C('d'), d(x) { } ~D() { } }; class E : virtual public A, public B, public C { char e; public: E(char x) : A('e'), B('e'), C('e'), e(x) { } ~E() { } }; class F : virtual public A, public D, public E { char f; public: F(char x) : A('f'), D('f'), E('f'), f(x) { } ~F() { } }; int main() { F f('x'); return 0; }