fork(1) download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class A
  5. {
  6. public:
  7. int var;
  8. public:
  9. A(int x)
  10. {
  11. var = x; // Это обращение к A::var
  12. }
  13. };
  14.  
  15. class B: public A
  16. {
  17. protected:
  18. int var;
  19. public:
  20. B():A(2)
  21. {
  22. var = 4; // Обращение к B::var
  23. }
  24. };
  25.  
  26. class C: public A
  27. {
  28. protected:
  29. int var;
  30. public:
  31. C():A(3)
  32. {
  33. var = 6; // Обращение к C::var
  34. }
  35. };
  36.  
  37.  
  38. class D: public B, public C
  39. {
  40. protected:
  41. int var;
  42. public:
  43.  
  44. void method()
  45. {
  46. var = static_cast<A*>(static_cast<B*>(this))->var; // Должен выдать 2
  47. cout << var << endl;
  48.  
  49. var = ((A*)(C*)this)->var; // Должен выдать 3
  50. cout << var << endl;
  51.  
  52. var = B::var; // Должен выдать 4
  53. cout << var << endl;
  54.  
  55. var = C::var; // Должен выдать 6
  56. cout << var << endl;
  57. }
  58. };
  59.  
  60. int main()
  61. {
  62. D obj;
  63. obj.method();
  64. }
Success #stdin #stdout 0s 3468KB
stdin
Standard input is empty
stdout
2
3
4
6