파생 클래스 "D"에서 시퀀스를 변경하면 아래의 프로그램에서 기본 클래스의 생성자 순서가 달라집니다.다중 레벨 상속의 경우 가상 기본 클래스 생성자를 알 수 없습니다.
#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()
가상 클래스 개념의 경우 생성자가 어떻게 호출되는지 알려주십시오.
가상 상속의 작동 방식을 잘 모르는 경우 http://ideone.com/Ptaf5u – kfsone
개인 상속을 사용하는 이유는 무엇입니까? – curiousguy