【发布时间】:2016-11-23 05:04:58
【问题描述】:
在下面的程序中,如果我更改派生类“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()
请任何人告诉我们在虚拟类概念的情况下如何调用构造函数。
【问题讨论】:
-
不确定您是否了解虚拟继承的工作原理:ideone.com/Ptaf5u
-
为什么要使用私有继承?
标签: c++ constructor multiple-inheritance virtual-inheritance