fork download
  1. #include <iostream>
  2.  
  3. class A
  4. {
  5. public:
  6. virtual void foo() = 0;
  7. };
  8.  
  9. class B
  10. {
  11. public:
  12. virtual void foo() = 0;
  13. };
  14.  
  15. class AA : public A {
  16. public:
  17. virtual void foo() { a_foo(); }
  18. virtual void a_foo() = 0;
  19. };
  20.  
  21. class BB : public B {
  22. public:
  23. virtual void foo() { b_foo(); }
  24. virtual void b_foo() = 0;
  25. };
  26.  
  27. class C : public AA, public BB
  28. {
  29. public:
  30. virtual void a_foo();
  31. virtual void b_foo();
  32. };
  33.  
  34. void C::a_foo() { std::cout<<"C::a_foo"<<std::endl; }
  35. void C::b_foo() { std::cout<<"C::b_foo"<<std::endl; }
  36.  
  37. int main()
  38. {
  39. C c;
  40. A* pa = &c;
  41. B* pb = &c;
  42.  
  43. c.a_foo();
  44. c.b_foo();
  45. pa->foo();
  46. pb->foo();
  47. }
Success #stdin #stdout 0s 3296KB
stdin
Standard input is empty
stdout
C::a_foo
C::b_foo
C::a_foo
C::b_foo