C++ 中的多重继承,所涉及的类的大小
这里的结构 :
T
/ \
T1 T2
\ /
T3
class T
{
public:
void dis(){}
public:
int m;
};
class T1:public T
{
public:
int m1;
};
class T2 :public T
{
public:
int m2;
};
class T3 :public T1,public T2
{
public:
int m3;
};
则T,T1,T2,T3大小
T,T1,T2应该都没问题,T3这里将 T1,T2 继承下来则
T3 <----- T1 ( m,m1) T2(m,m2)
16 + 4 = 20, 相当于 T3中m有两份
这里用虚继承
class T1:public T 变为 class T1:public virtual T
class T2:public T 变为 class T2:public virtual T
则输出大小
因为T1,T2多了虚基类表指针32bit下占4个字节,则变为12
T3则正常了,m在T3中只会有一份,则为24个字节
这就是虚继承的作用,保存基类中的一份成员对象,多重继承下更加的节省空间