In unten Programm im Fall, wenn ich die Reihenfolge in abgeleiteten Klasse "D" ändern, dann bekomme ich andere Reihenfolge der Konstruktoren der Basisklasse.Nicht in der Lage zu verstehen, virtuelle Basisklasse Konstruktor im Falle von Multilevel-Vererbung
#include <iostream>
using namespace std;
class A {
public :
A()
{
cout << "A()" <<endl;
}
};
class B : virtual A{
public :
B()
{
cout << "B()" << endl;
}
};
class C : virtual B{
public :
C()
{
cout << "C()" << endl;
}
};
Case (1)
========
class D : public A, public B, public C
{
};
int main()
{
D d;
return 0;
}
OUTPUT :
A()
B()
A()
B()
C()
Case (2)
========
class D : public C, public B, public A
{
};
int main()
{
D d;
return 0;
}
OUTPUT :
A()
B()
C()
B()
A()
Case (3)
========
class D : public B, public A, public C
{
};
int main()
{
D d;
return 0;
}
OUTPUT :
A()
B()
B()
A()
C()
Bitte sagen Sie uns, wie Konstruktoren im Falle von virtuellen Klassenkonzepten aufgerufen werden.
Nicht sicher, wenn Sie verstehen, wie virtuelle Vererbung funktioniert: http://ideone.com/Ptaf5u – kfsone
Warum verwenden Sie private Vererbung? – curiousguy