1. 多重继承的内存布局
struct A
{
int a;
};
struct B:public A
{
int b;
};
struct C:public A
{
int c;
}
struct D
{
int d;
}
多重继承的情况, 如果父类有共同的祖父类,则祖父类对象被拷贝了多次。在该例中,B的内存布局为(假设从上往下为地址增加方向)
int A::a
int B: b
则D的内存布局为
int B::A:;a
int B:;b
int A::a
int C::c
int D::d
如果sizeof各个类的大小,很明显
如果有这样的语句
D *pd = new D;
B *pa = pd;
C *pb = pd;
A *pa = pd;
我们分别输出pa,pd,pc和pd的地址试试