1. 多继承可能存在的问题

  1. 增加程序的复杂度, 使得程序的编写和维护比较困难,容易出错;
  2. 成员变量的同名二义性:在继承时,基类之间或基类与派生类之间发生成员同名时,将出现对成员访问的不确定性,即同名二义性;

消除多继承中的二义性:

  • 利用作用域运算符::,用于限定派生类使用的是哪个基类的成员;

  • 在派生类中定义同名成员,覆盖基类中的相关成员;

  1. 成员变量的路径二义性 当派生类从多个基类派生,而这些基类又从同一个基类派生,则在访问此共同基类的成员时,将产生另一种不确定性,即路径二义性;(菱形继承)

消除路径二义性的方法:

  • 消除同名二义性的两种方法都可以;

  • 使用虚继承,使得不同路径继承来的同名成员在内存中只有一份拷贝。

    (class A:virtual public Base)

Copyright © ershouche-FE 2019 all right reserved,powered by Gitbook文件修订时间: 2022-02-28 16:00:30

results matching ""

    No results matching ""