1.在什么时候需要虚拟继承呢?
虚拟继承是多重继承特有的概念。虚拟基类是为了解决多重继承而出现的。例如A继承了Y,Z。而Y,Z继承自X,因此A两次出现了类x中的变量和函数,可以将Y,Z定义为虚拟继承。而x则变成了虚拟继承的基类
class X{ };
class Y: public virtual X{ };
class Z: public virtual X{ };
class A :public Y, public Z{ };
上述的X,Y,Z,A中都没有任何一个class中含有明显的数据,只表明了之间的继承关系。所以认为每个的大小都为0?当然不对。即使是class X的大小也不为0;
#include<iostream>
using namespace std;
class A{
};
class B:public virtual A{
};
class C: public virtual A{
};
class D:public B,public C{
};
int main()
{
int a , b , c , d;
a = sizeof(A);
b = sizeof(B);
c = sizeof(C);
d