C++类的virtual继承关系

来源:互联网 发布:微信端口 编辑:程序博客网 时间:2024/06/12 00:03
class X{public:void getX(){cout<<"getX"<<endl;}int i,j,k,m;};class Y: virtual public X{public:void getY(){cout<<"getY"<<endl;}};class Z:virtual public X{public:void getZ(){cout<<"getZ"<<endl;}};class Box:public Y, public Z{public:void getBox(){cout<<"Box"<<endl;}};int main(){Box b;b.getX();cout<<sizeof(Z)<<endl; return 0;}


总结:

1、类的继承如果有B继承A,C继承A,D继承BC时,D中就要两份一样的A的类成员,通过virtual继承方式,可以D中就只会有一份A的类成员。

2、虚集成会消耗额外的内存空间,和虚函数表类似。

3、只有再多重继承中,virtual才有用,其他情况下使用,会降低效率并且多内存消耗。

0 0
原创粉丝点击