10.7.2 多基继承时的情况
相比单基派生的情况,多基派生略显复杂,不过基本原理是一样的,所有的派生类都适应于基类,举例来说,如图10.9所示的继承结构,类层次的定义如下所示。
图 10.9 多基派生时的类型适应
class A class B class C:public A class D:public B class E:public C,public D
派生类E中各成员在内存中的分布如图10.10所示,对本例来说,下列用法都是合法的,a、b、c、d和e分别代表类A、B、C、D和E的对象,pA、pB、pC、pD和pE分别代表5个类的指针。
1.对象赋值和引用初始化
a=c; a=e; b=d; b=e; c=e; d=e; A&rA=e;//其他情况省略,与赋值完全一致2.指针转换 pA=pC;//或pA=&c;下同 pA=pE; pB=pD; pB=pE; pC=pE; pD=pE;
以pB=pE为例,赋值后类B指针pB指向pE所指的类E对象中类B复制的首地址,这样,便可以通过pB对pE所指的类E对象中类B复制部分进行访问。
图 10.10 派生类对象成员的内存模型