读书人

虚承袭的作用的疑问

发布时间: 2012-10-20 14:12:48 作者: rapoo

虚继承的作用的疑问
class A
{
public:
A(){cout<<"A构造"<<endl;}
int a;
};

class B:virtual public A
{
public:
B(){cout<<"B构造"<<endl;}
};

class C: public A
{
public:
C(){cout<<"C构造"<<endl;}
};

class D:public B,public C
{
public:
D(){cout<<"D构造"<<endl;}
};

这里B是通过虚继承A的,而C是直接继承A,这样的话会是什么情况?
D里面有几个int a啊?

[解决办法]

探讨
非常感谢你的回复,我通过测试验证你的观点,但是无奈自己水平很菜,对你的第二句解释不是很明白:

但如果在D和A之间再增加虚拟继承,那么将仍然只有两个int a,因为对于虚拟继承,在同一个最终派生对象中每个具有相同基类的虚拟继承都只能包含同一个基类子对象。
希望你能进一步说明,最好能举一个例子,非常感谢!

引用:

D里面会有两个int a。因为对于非虚拟继承,最终派……

读书人网 >C++

热点推荐