面试题答案
一键面试- 体现的原则:
- 共享唯一实例原则:在这种多层继承体系中,类A作为虚基类,使得从类A虚继承的类B和类C共享类A的唯一实例。
- 避免数据冗余和二义性问题的方式:
- 数据冗余:
- 如果不使用虚基类,类B和类C分别继承类A时,会各自拥有类A的一份数据成员副本。而使用虚基类后,无论类B和类C有多少个派生类(如类D同时继承B和C),都只有一份类A的数据成员实例,从而避免了数据冗余。
- 二义性:
- 当类D同时继承类B和类C时,如果类A不是虚基类,在类D中访问类A的成员时会出现二义性,因为编译器无法确定应该使用类B继承过来的类A成员还是类C继承过来的类A成员。但通过虚基类,保证了类A只有一个共享实例,在类D中访问类A成员时就不会产生二义性。
- 数据冗余: