fork download
  1. #include <iostream>
  2.  
  3. struct A
  4. {
  5. A(int a) : a(a) { std::cout << __PRETTY_FUNCTION__ << std::endl; }
  6. int a;
  7. };
  8.  
  9. struct B : virtual public A
  10. {
  11. B() : A('b') { std::cout << __PRETTY_FUNCTION__ << std::endl; }
  12. };
  13.  
  14. struct C : virtual public A
  15. {
  16. C() : A('c') { std::cout << __PRETTY_FUNCTION__ << std::endl; }
  17. };
  18.  
  19. struct D : public B, public C
  20. {
  21. // Note: virtual base class initialied *here*
  22. D() : A('d') { std::cout << __PRETTY_FUNCTION__ << std::endl; }
  23. };
  24.  
  25. int main()
  26. {
  27. B b;
  28. C c;
  29. D d;
  30. std::cout << b.a << ',' << c.a << ',' << d.a << std::endl;
  31. return 0;
  32. }
Success #stdin #stdout 0s 3296KB
stdin
Standard input is empty
stdout
A::A(int)
B::B()
A::A(int)
C::C()
A::A(int)
B::B()
C::C()
D::D()
98,99,100