[C++] 상속의 순서
AngelsTears
안녕하세요 수다님들의 조언을 얻고자 질문합니다.
exceptional c++ style 14번 항목 마지막에 나오는 내용입니다.
상속의 순서에 관한건데요
저의 짧은 지식으로는
b1-v1-
b1-b2-v2-b3-
d1-d2-
m1-m2-
x
즉 d2의 모든 기반클래스의 생성자가 실행된후
d1의 생성자실행 - d2의 생성자가 실행
이렇게 생각하는데요책에서 보면
d1의 생성자가 실행된후 다시 b3의 생성자가 실행됩니다.
그리고 d2의 생성자가 실행되네요.
d2의 모든 기반클래스의 생성자가 실행된후 d1으로 넘어가지 않고
b3생성자실행은 왜 d1생성자 후에 호출이 되는지 궁금합니다.수다님들의 조언구합니다. 감사합니다.-src-class b1
{
public:
b1(){ std:: cout __function__ std::endl; }
};
class b2
{
public:
b2(){ std::cout __function__ std::endl; }
};
class b3
{
public:
b3(){ std::cout __function__ std::endl; }
};
class v1 : public b1//
{
public:
v1(){ std::cout __function__ std::endl; }
};
class v2 : public b1, public b2//
{
public:
v2(){ std::cout __function__ std::endl; }
};
class d1 : virtual public v1//
{
public:
d1(){ std::cout __function__ std::endl; }
};
class d2 : public b3, virtual public v2
{
public:
d2(){ std::cout __function__ std::endl; }
};
class m1
{
public:
m1(){ std::cout __function__ std::endl; }
};
class m2
{
public:
m2(){ std::cout __function__ std::endl; }
};
class x : public d1, public d2
{
m1 m1_;
m2 m2_;
};
int _tmain(int argc, _tchar* argv[])
{
x whatthehellareyoudoingnow;
}