fork download
  1. #include<iostream>
  2. using namespace std;
  3. class A
  4. {
  5. public:
  6. virtual void f1() { cout << "A::F1\n"; }
  7. void f2() { cout << "A::F2\n"; }
  8. void f3() { cout << "A::F3\n"; }
  9.  
  10.  
  11. };
  12.  
  13. class B :public A
  14. {
  15. public:
  16. void f1() { cout << "B::F1\n"; }
  17. virtual void f2() { cout << "B::F2\n"; }
  18. void f3() { cout << "B::F3\n"; }
  19. };
  20. class C :public B
  21. {
  22. public:
  23. void f1() { cout << "C::F1\n"; }
  24. void f2() { cout << "C::F2\n"; }
  25. virtual void f3() { cout << "C::F3\n"; }
  26.  
  27. };
  28.  
  29. class D :public C
  30. {
  31. public:
  32. void f1() { cout << "D::F1\n"; }
  33. void f2() { cout << "D::F2\n"; }
  34. void f3() { cout << "D::F3\n"; }
  35.  
  36. };
  37.  
  38. int main()
  39. {
  40. B* d1 = new D();
  41. d1->f1();
  42. d1->f2();
  43. d1->f3();
  44. cout << "\n";
  45. A* d2 = new D();
  46. d2->f1();
  47. d2->f2();
  48. d2->f3();
  49. cout << "\n";
  50. C* d3 = new D();
  51. d3->f1();
  52. d3->f2();
  53. d3->f3();
  54.  
  55. }
Success #stdin #stdout 0s 5288KB
stdin
Standard input is empty
stdout
D::F1
D::F2
B::F3

D::F1
A::F2
A::F3

D::F1
D::F2
D::F3