什么是二义性?

  • 简单来说就是一个班级有两个同名的人都叫张三, 老师叫张三回答这道题, 这时, 谁都不知道老师指的是哪个张三, 这就是二义
  • 多重继承的二义性就是在继承时,基类之间、或基类与派生类之间发生成员同名时,将出现对成员访问的不确定性——同名二义性
  • 当派生类从多个基类派生,而这些基类又从同一个基类派生,则在访问此共同基类中的成员时,将产生另一种不确定性——路径二义性。

demo

#include <iostream>
#include <Windows.h>using namespace std;class Father {public:Father() {}~Father() {}void play() {cout << "Father KTV唱歌!" << endl;}
};class Mother {public:Mother() {}~Mother() {}void play() {cout << "Mother 逛街购物!" << endl;}
};class Son : public Father, public Mother{public:Son() {}~Son() {}
};int main(void) {Son son;son.play(); //无法确定该调用Fther的play()还是Mother的play()system("pause");return 0;
}

解决多重继承的二义性的方法1:

使用 “类名::” 进行指定, 指定调用从哪个基类继承的方法!

    son.Father::play();son.Mother::play();

解决多重继承的二义性的方法2:

在子类中重新实现这个同名方法, 并在这个方法内部, 使用基类名进行限定,
来调用对应的基类方法

class Son : public Father, public Mother{public:Son() {}~Son() {} void play() { Father::play(); Mother::play(); }
};int main(void) {Son son;son.play();       //调用自己类内部重写的play()方法system("pause");return 0;
}

C++基础知识 - 多重继承的二义性问题相关推荐

  1. 全国计算机等级考试——二级公共基础知识辅导讲义 卿勇军主讲

    全国计算机等级考试--二级公共基础知识辅导讲义 卿勇军主讲 第一章数据结构与算法 1.1算法 1.算法是指解题方案的准确而完整的描述.换句话说,算法是对特定问题求解步骤的一种描述. *:算法不等于程序 ...

  2. 从OOP的角度重看C++(一)——背景与基础知识

    从OOP的角度重看C++(一)--背景与基础知识 记得本科的时候初次接触C++的时候,没有好感,不喜欢老师的讲课风格,导致C++一塌糊涂,没有什么概念,除了完成老师作业的时候,用的和C几乎没有差别,真 ...

  3. 【C++后台开发面经】面试总结第三波:针对后台开发相关基础知识分类总结

    前言 面试总结第三波,关于后台开发面试相关基础知识,数据结构.算法.linux操作系统.计算机网络.C++.数据库进行分类总结. 后端面试总结 目录 后端面试总结 1.数据结构 链表和数组的区别 树的 ...

  4. java基础知识点_「Java面试题/知识点精华集」20000+字的Java基础知识篇(2020最新版) !

    " 本文已经收录进我的 79K Star 的 Java 开源项目 JavaGuide:https://github.com/Snailclimb/JavaGuide (「Java学习+面试指 ...

  5. 计算机二级公共基础知识证书,计算机二级公共基础知识

    计算机二级公共基础知识 下面是小编收集整理的计算机二级公共基础知识,希望对您有所帮助!如果你觉得不错的话,欢迎分享! 第一章 数据结构与算法 1.1算法 算法:是指解题方案的准x而完整的描述. 算法不 ...

  6. 【转】Java基础知识整理

    本博文内容参考相关博客以及<Java编程思想>整理而成,如有侵权,请联系博主. 转载请注明出处:http://www.cnblogs.com/BYRans/ PDF版下载链接:<Ja ...

  7. Java 面试知识点解析(一)——基础知识篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  8. java 基础知识总结

    Java基础知识总结 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java语言代码把思 ...

  9. [转载] ANTLR——编译原理基础知识

    来源:ANTLR中文网站:http://www.antlr.org.cn 编译是将计算机高级语言如C++.Java.C#编写的源程序翻译成可以在计算机上执行的机器语言的翻译过程.编译过程中分:词法分析 ...

最新文章

  1. 后台开发真的不需要看《tcpip详解》吗
  2. BestCoder25 1001.Harry and Magical Computer(hdu 5154) 解题报告
  3. c语言对齐方式研究笔记
  4. 二维数组foreach嵌套遍历,判断连续3天以上的算有效数据
  5. Upload-Labs(11-15)
  6. matlab 过度曝光,MATLAB:补偿图像处理中的过度曝光/过饱和度
  7. node mysql登录注册_Node数据库入门(登录注册功能)
  8. ubuntu-18.10 允许 root登录图形界面
  9. 使用dex2jar反编译apk
  10. 帕拉丁(山东)俱乐部大型西藏自驾游,天籁之旅,与心灵自由相约
  11. 时频分析工具箱典型函数的使用
  12. 10个 安卓应用商店开发者公司账号注册(2022最新最全)
  13. 基于单片机的八层电梯设计
  14. 【linux】循序渐进学运维-基础篇-mount
  15. 高中生学python培养思维能力_python学习(七周七第二章结构化思维及如何学习)...
  16. 山月大佬做了个极客时间返现平台及技术栈介绍
  17. 问一个sql方面的问题
  18. 吃豆人,一个小游戏,使用第三方图形库EasyX
  19. 放假期间网站被挂马的解决办法
  20. python学习——log、log10、log2、log1p

热门文章

  1. AOPlog4j2propagation的7种事务配置
  2. SAP ABAP BASE64 MD5 加解密
  3. 57期性能测试_0621
  4. java笔记--多敲代码四
  5. 你应该学点哲学的20个理由:不为拥有深奥的思想,只为更好地生活
  6. 微型计算机机安装硬盘教程,装机DIY之硬盘安装方法 不同硬盘安装方法图解教程...
  7. 题目:两道迷宫类型题
  8. Nodejs 微信加密消息开发
  9. Crazy Binary String
  10. 最简明扼要的 Systemd 教程,只需十分钟