参考答案
使用虚继承解决菱形继承的二义性和数据冗余。核心要点:在中间基类继承顶层基类时加virtual关键字,使顶层基类子对象在最终派生类中只有一份;非虚继承会导致两份基类成员,访问时产生二义性;虚继承通过虚基类表指针共享同一实例。示例:class A{}; class B: virtual public A{}; class C: virtual public A{}; class D: public B, public C{}; 此时D对象中A只有一份,可通过D对象直接访问A成员而无歧义。原理:虚继承下,派生类对象包含指向虚基类子对象的指针,避免重复拷贝。注意构造函数初始化顺序,需由最底层派生类直接初始化虚基类。