page contents

多继承存在什么问题?如何消除多继承中的二义性?

轩辕小不懂 发布于 2022-01-05 10:58
阅读 610
收藏 0
分类:C/C++开发
  • c
  • c++
  • 2815
    Nen
    Nen
    - 程序员

    1. 增加程序的复杂度,使得程序的编写和维护比较困难,容易出错;

    2. 在继承时,基类之间或基类与派生类之间发生成员同名时,将出现对成员访问的不确定性,即同名二义性;

    消除同名二义性的方法:

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

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

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

    消除路径二义性的方法:

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

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

    请先 登录 后评论