Advertisement
Guest User

Untitled

a guest
Jan 25th, 2020
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.74 KB | None | 0 0
  1. /*class A
  2. {
  3. public:
  4. int ap;
  5. void X();
  6. private:
  7. int aq;
  8. void aX();
  9. };
  10.  
  11. class B : public A
  12. {
  13. public:
  14. int bp;
  15. void Y();
  16. private:
  17. int bq;
  18. void bY();
  19. };
  20.  
  21. class C : public B
  22. {
  23. public:
  24. int cp;
  25. void Z();
  26. private:
  27. int cq;
  28. void cZ();
  29. };
  30.  
  31. void A::X() { };
  32. void A::aX() { }; // die
  33. void B::bY() { }; // und die weis ich nicht
  34. void C::Z() { };
  35.  
  36. void B::Y()
  37. {
  38. bq = bp;
  39. aq = ap; //private in A daher kein Zugriff
  40. bY();
  41. }
  42.  
  43. void C::cZ()
  44. {
  45. ap = 1;
  46. bp = 2;
  47. cq = 3;
  48. X();
  49. Y();
  50. aX(); //Private in A daher kein zugriff
  51.  
  52. int main()
  53. {
  54. A a; B b; C c;
  55.  
  56. a.X(); // geht
  57. b.bY(); // geht nicht, da private. Kann glaub nur von Methoden der Klasse B verwendet werden
  58. c.cp = 4; // geht
  59. c.bp = 1; // sollte gehen
  60. c.ap = 2; // kein Plan ob C auch auf A zugreifen kann, da die Basisklasse zu C B ist.
  61. c.aq = 5; // geht auf keinsten, da aq private in A ist
  62.  
  63. b.ap = c.ap; // dürfte nicht gehen, da kein Zuweisungsoperator implementiert ist, wobei hier vllt auch nicht benötigt wird, da nur integers und keine komplexeren Elemente zugewiesen werden
  64.  
  65. return 0;
  66. }*/
  67. class A
  68. {
  69. public :
  70. void a();
  71. virtual void va() = 0; // geht nicht ???
  72. virtual void a(int n);
  73. private :
  74. void c();
  75. };
  76.  
  77.  
  78. class B : public A
  79. {
  80. public :
  81. void b();
  82. virtual void vb();
  83. void a(double d);
  84. void a(int i);
  85. virtual void va();
  86. };
  87.  
  88.  
  89. class C : public B
  90. {
  91. public :
  92. virtual void c();
  93. void a(float);
  94. virtual void a();
  95. virtual void va();
  96. };
  97.  
  98. int main (){
  99. A a; // A ist abstrakte Klasse, dient nur der vereerbung
  100. B b;
  101. C c;
  102. A* pa=&b; //Zeigt auf speicheradresse des objektes b
  103. B* pb=&c; // zeigt auf Speicheradresse des objektes c
  104. float x = 1.2;
  105. pa->a(); // ruft a() in A auf (überladung), da a() in B argument benötigt
  106. pa->va(); // ruft va() in B auf, da va() in A pure virtual
  107. pa->a(1); // ruft a() in B auf, da a(int) in A virtual
  108. pa->c(); // geht nicht, ist privat in A, daher kein Zugriff
  109. pb->b(); // ruft b() in B auf da keins in C
  110. pa->vb(); // geht nicht da vb() nur in B und nicht in A
  111. pa->a(x); // ruft a(int) in B auf, da a(int) in A virtual
  112. pb->a(); // geht nicht, no matching member function to call a, da die anderen argument benötigen (in b)
  113. pb->va(); // ruft va() in c auf ?????
  114. pb->a(1); // ruft a(int) in B auf
  115. pb->c(); // geht nicht, wieder private in A
  116. pb->b(); // ruft b() in B auf
  117. pb->vb(); // ruft vb() in B auf
  118. pb->a(x); // ruft a(double) un B auf
  119. pa = &c; // ändert Zeiger
  120. pa->a(); // ruft a() in A auf =??????
  121. pa->va(); // ruft va() in A auf ?????????
  122. pa->a(1); // ruft ????????
  123. pa->c(); // geht nicht, wieder private in A
  124. pa->b(); // geht nicht, no member named b in A
  125. pa->vb(); // geht nicht, no member named b in A
  126. pa->a(x); // kann ich das überschreiben
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement