fork download
  1. #include <iostream>
  2.  
  3. /*
  4. A
  5.   / \
  6.   B C
  7.   \ /
  8.   D
  9. */
  10.  
  11. using namespace std;
  12.  
  13. class A
  14. {
  15. public:
  16. int x;
  17.  
  18. virtual string whoami() const
  19. {
  20. return "A";
  21. }
  22.  
  23. virtual ~A() {}
  24. };
  25.  
  26. class B : public A
  27. {
  28. public:
  29. virtual string whoami() const override
  30. {
  31. return "B";
  32. }
  33. };
  34.  
  35. class C : public A
  36. {
  37. public:
  38. virtual string whoami() const override
  39. {
  40. return "C";
  41. }
  42. };
  43.  
  44. class D : public B, public C
  45. {
  46. public:
  47. virtual string whoami() const override
  48. {
  49. return "D";
  50. }
  51. };
  52.  
  53. int main()
  54. {
  55. D *d = new D;
  56. B *b = d;
  57. C *c = d;
  58.  
  59. b->x = 1;
  60. c->x = 2;
  61. cout << b->x << endl;
  62. }
Success #stdin #stdout 0.01s 5320KB
stdin
Standard input is empty
stdout
1