C++基础知识 - 多重继承的二义性问题
什么是二义性?
- 简单来说就是一个班级有两个同名的人都叫张三, 老师叫张三回答这道题, 这时, 谁都不知道老师指的是哪个张三, 这就是二义
- 多重继承的二义性就是在继承时,基类之间、或基类与派生类之间发生成员同名时,将出现对成员访问的不确定性——同名二义性
- 当派生类从多个基类派生,而这些基类又从同一个基类派生,则在访问此共同基类中的成员时,将产生另一种不确定性——路径二义性。
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.算法是指解题方案的准确而完整的描述.换句话说,算法是对特定问题求解步骤的一种描述. *:算法不等于程序 ...
- 从OOP的角度重看C++(一)——背景与基础知识
从OOP的角度重看C++(一)--背景与基础知识 记得本科的时候初次接触C++的时候,没有好感,不喜欢老师的讲课风格,导致C++一塌糊涂,没有什么概念,除了完成老师作业的时候,用的和C几乎没有差别,真 ...
- 【C++后台开发面经】面试总结第三波:针对后台开发相关基础知识分类总结
前言 面试总结第三波,关于后台开发面试相关基础知识,数据结构.算法.linux操作系统.计算机网络.C++.数据库进行分类总结. 后端面试总结 目录 后端面试总结 1.数据结构 链表和数组的区别 树的 ...
- java基础知识点_「Java面试题/知识点精华集」20000+字的Java基础知识篇(2020最新版) !
" 本文已经收录进我的 79K Star 的 Java 开源项目 JavaGuide:https://github.com/Snailclimb/JavaGuide (「Java学习+面试指 ...
- 计算机二级公共基础知识证书,计算机二级公共基础知识
计算机二级公共基础知识 下面是小编收集整理的计算机二级公共基础知识,希望对您有所帮助!如果你觉得不错的话,欢迎分享! 第一章 数据结构与算法 1.1算法 算法:是指解题方案的准x而完整的描述. 算法不 ...
- 【转】Java基础知识整理
本博文内容参考相关博客以及<Java编程思想>整理而成,如有侵权,请联系博主. 转载请注明出处:http://www.cnblogs.com/BYRans/ PDF版下载链接:<Ja ...
- Java 面试知识点解析(一)——基础知识篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- java 基础知识总结
Java基础知识总结 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java语言代码把思 ...
- [转载] ANTLR——编译原理基础知识
来源:ANTLR中文网站:http://www.antlr.org.cn 编译是将计算机高级语言如C++.Java.C#编写的源程序翻译成可以在计算机上执行的机器语言的翻译过程.编译过程中分:词法分析 ...
最新文章
- 后台开发真的不需要看《tcpip详解》吗
- BestCoder25 1001.Harry and Magical Computer(hdu 5154) 解题报告
- c语言对齐方式研究笔记
- 二维数组foreach嵌套遍历,判断连续3天以上的算有效数据
- Upload-Labs(11-15)
- matlab 过度曝光,MATLAB:补偿图像处理中的过度曝光/过饱和度
- node mysql登录注册_Node数据库入门(登录注册功能)
- ubuntu-18.10 允许 root登录图形界面
- 使用dex2jar反编译apk
- 帕拉丁(山东)俱乐部大型西藏自驾游,天籁之旅,与心灵自由相约
- 时频分析工具箱典型函数的使用
- 10个 安卓应用商店开发者公司账号注册(2022最新最全)
- 基于单片机的八层电梯设计
- 【linux】循序渐进学运维-基础篇-mount
- 高中生学python培养思维能力_python学习(七周七第二章结构化思维及如何学习)...
- 山月大佬做了个极客时间返现平台及技术栈介绍
- 问一个sql方面的问题
- 吃豆人,一个小游戏,使用第三方图形库EasyX
- 放假期间网站被挂马的解决办法
- python学习——log、log10、log2、log1p