fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct B {
  5. virtual int f() {return 1;}
  6. };
  7. struct D1 : virtual public B {
  8. virtual int f(){return 2;}
  9. };
  10. struct D2 : virtual public B{};
  11. struct M : public D1, public D2 {
  12. virtual int f() {return 3;}
  13. virtual int g() {return D1::f();}
  14. virtual int h() {return B::f();}
  15. };
  16.  
  17. int main()
  18. {
  19. M m;
  20. D1 *d1 = &m;
  21. cout << m.f();
  22. cout << d1->f();
  23. cout << static_cast<D2&>(m).f();
  24. cout << m.g();
  25. cout << m.h();
  26. return 0;
  27. }
Success #stdin #stdout 0s 16064KB
stdin
Standard input is empty
stdout
33321