Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*class A
- {
- public:
- int ap;
- void X();
- private:
- int aq;
- void aX();
- };
- class B : public A
- {
- public:
- int bp;
- void Y();
- private:
- int bq;
- void bY();
- };
- class C : public B
- {
- public:
- int cp;
- void Z();
- private:
- int cq;
- void cZ();
- };
- void A::X() { };
- void A::aX() { }; // die
- void B::bY() { }; // und die weis ich nicht
- void C::Z() { };
- void B::Y()
- {
- bq = bp;
- aq = ap; //private in A daher kein Zugriff
- bY();
- }
- void C::cZ()
- {
- ap = 1;
- bp = 2;
- cq = 3;
- X();
- Y();
- aX(); //Private in A daher kein zugriff
- int main()
- {
- A a; B b; C c;
- a.X(); // geht
- b.bY(); // geht nicht, da private. Kann glaub nur von Methoden der Klasse B verwendet werden
- c.cp = 4; // geht
- c.bp = 1; // sollte gehen
- c.ap = 2; // kein Plan ob C auch auf A zugreifen kann, da die Basisklasse zu C B ist.
- c.aq = 5; // geht auf keinsten, da aq private in A ist
- 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
- return 0;
- }*/
- class A
- {
- public :
- void a();
- virtual void va() = 0; // geht nicht ???
- virtual void a(int n);
- private :
- void c();
- };
- class B : public A
- {
- public :
- void b();
- virtual void vb();
- void a(double d);
- void a(int i);
- virtual void va();
- };
- class C : public B
- {
- public :
- virtual void c();
- void a(float);
- virtual void a();
- virtual void va();
- };
- int main (){
- A a; // A ist abstrakte Klasse, dient nur der vereerbung
- B b;
- C c;
- A* pa=&b; //Zeigt auf speicheradresse des objektes b
- B* pb=&c; // zeigt auf Speicheradresse des objektes c
- float x = 1.2;
- pa->a(); // ruft a() in A auf (überladung), da a() in B argument benötigt
- pa->va(); // ruft va() in B auf, da va() in A pure virtual
- pa->a(1); // ruft a() in B auf, da a(int) in A virtual
- pa->c(); // geht nicht, ist privat in A, daher kein Zugriff
- pb->b(); // ruft b() in B auf da keins in C
- pa->vb(); // geht nicht da vb() nur in B und nicht in A
- pa->a(x); // ruft a(int) in B auf, da a(int) in A virtual
- pb->a(); // geht nicht, no matching member function to call a, da die anderen argument benötigen (in b)
- pb->va(); // ruft va() in c auf ?????
- pb->a(1); // ruft a(int) in B auf
- pb->c(); // geht nicht, wieder private in A
- pb->b(); // ruft b() in B auf
- pb->vb(); // ruft vb() in B auf
- pb->a(x); // ruft a(double) un B auf
- pa = &c; // ändert Zeiger
- pa->a(); // ruft a() in A auf =??????
- pa->va(); // ruft va() in A auf ?????????
- pa->a(1); // ruft ????????
- pa->c(); // geht nicht, wieder private in A
- pa->b(); // geht nicht, no member named b in A
- pa->vb(); // geht nicht, no member named b in A
- pa->a(x); // kann ich das überschreiben
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement