Diskussion:C++-Programmierung: Vererbung
Abschnitt hinzufügenErscheinungsbild
Letzter Kommentar: vor 15 Jahren von Benediktibk in Abschnitt Virtuelle Vererbung - expliziter Aufruf der Konstruktoren
bei einem struct ist die Standardvererbung public, bei einer class ist sie private
- Stimmt, liebe(r) Anonymous. Das sieht § 9 Abs. 4 im C++-Standard genauso. Baust du es ein? --RokerHRO 22:00, 7. Feb. 2009 (CET)
Virtuelle Vererbung
[Bearbeiten]Bei Virtueller Vererbung wird erwähnt, dass "Jede Instanz der Klasse DateiZumLesenUndSchreiben zwei Teilobjekte der Basisklasse Dateihat." Es wäre ein Bsp hilfreich, wie man auf die Teilobjekte zugreifen kann
- Beispiel:
class Basis { public: int b; };
class Links : public Basis { public: int l; };
class Rechts : public Basis { public: int r; };
class Enkel : public Links, public Rechts {};
int main() {
Enkel e;
e.l = 12; // klar.
e.Links::l = 12; // das gleiche, nur ausführlicher
e.Links::b = 42; // b des Basisklassen-Objektes von »Links«
e.Rechts::b = 9; // b des Basisklassen-Objektes von »Rechts«
}
--RokerHRO 10:35, 17. Jul. 2009 (CEST)
Virtuelle Vererbung - expliziter Aufruf der Konstruktoren
[Bearbeiten]Es ist nicht nötig die Konstruktoren explizit aufzurufen, zumindest der gcc handhabt das so:
- Quellcode :
#include <stdio.h>
class A
{
public:
A()
{
printf("A\n");
}
};
class B : virtual public A
{
public:
B()
{
printf("B\n");
}
};
class C : virtual public A
{
public:
C()
{
printf("C\n");
}
};
class D : public B, public C
{
public:
D()
{
printf("D\n");
}
};
int main()
{
A a;
B b;
C c;
D d;
return 0;
}
- Ausgabe auf der Konsole :
A
A
B
A
C
A
B
C
D