出现频率:★★★★
类A派生B和C,   类D从B,C派生,如何将一个类A的指针指向一个类D的实例?
解析:
这道题实际上考查的是如何消除多重继承引起的向上继承二义性问题。程序代码如下所示:

        class A {};class B : public A {};class C : public A {};class D : public B, public C {};int main()        {                D d;                A *pd = &d; //编译错误                return 0;        }

由于B、C继承自A,B、C都拥有A的一份拷贝,类D多重继承自B、C,因此拥有A的两份拷贝,如果此时一个类A的指针指向一个类D的实例,会出现“模糊的转换”之类的编译错误。解决办法如下:

        class A {};class B : virtual public A {};     //B虚拟继承自A        class C : virtual public A {};     //C虚拟继承自A        class D : public B, public C {};  int main()        {                D d;                A *pd = &d; //成功转换                return 0;        }

将B、C都改为虚拟继承自A,则类D多重继承自B、C时,就不会重复拥有A的拷贝了,因此也就不会出现转换错误了。
答案:
把B、C都改为虚拟继承自A,消除继承的二义性。

转载于:https://www.cnblogs.com/stoneJin/archive/2011/11/01/2231258.html

多重继承中二义性的消除相关推荐

  1. 2.5.3 文法二义性的消除

    2.5.3 文法二义性的消除 (1 )不改变文法中原有的语法规则,仅加进一些语法的非形式规定. 例如,对于上例文法 G [ E ],不改变已有的 4 条规则,仅加进运算符的优先顺序和结合规则,即 * ...

  2. 编译原理(三)语法分析:3.二义性与二义性的消除

    文章目录 一.二义性 1.定义 2.原因 二.二义性的消除 1.改写二义文法为非二义文法 (1)步骤 (2)例子 (3)缺点 2.为文法符号规定优先级和结合性 3.修改语言的语法(表现形式被改变) [ ...

  3. C++基础知识 - 多重继承的二义性问题

    什么是二义性? 简单来说就是一个班级有两个同名的人都叫张三, 老师叫张三回答这道题, 这时, 谁都不知道老师指的是哪个张三, 这就是二义 多重继承的二义性就是在继承时,基类之间.或基类与派生类之间发生 ...

  4. 可视监控对讲、楼宇对讲等领域中的回声消除、音频降噪

    在实际生活中,对讲是比较常用的功能,如小区单元的视频对讲.监控场所的实时对讲,还有现在很火的智能门铃中的视频对讲,对讲这个功能确实方便了双方的沟通,但这功能的实现并不是那么容易,因为有个技术是较难实现 ...

  5. 怎么将抖音视频中的水印消除

    在社交网络上看到的不管是图片还是视频,一般都会有水印的存在,比如最常用的抖音短视频,保存下来的视频都会有水印,那怎么将抖音视频中的水印消除呢? 1 .今天要说的是一个手机 APP ,在应用商店找到&q ...

  6. python回声程序echo 一行代码_echo speex中的回声消除程序,可以直接在vs下运 效果还 有测试语料 Audio program 238万源代码下载- www.pudn.com...

    文件名称: echo下载 收藏√  [ 5  4  3  2  1 ] 开发工具: Visual C++ 文件大小: 5481 KB 上传时间: 2014-08-07 下载次数: 10 提 供 者: ...

  7. WPS中如何快速消除硬回车(转)

    WPS中如何快速消除硬回车(转) 在通常情况下,我们在WPS中用软回车表示换行,用硬回车标记段落结束.但有时,当我们用WPS 打开一个TXT文件或者从网上复制了一些文本后,发现段落中间也是用硬回车来表 ...

  8. 游戏陪玩平台源码开发,语音通话中的噪音消除处理

    如果用户在游戏陪玩平台源码使用语音通话的过程中,出现大量噪音将会对用户的体验造成不良的影响,所以在开发时,要将噪音消除掉,具体的处理代码将在下方展现: // 初始化 降噪 Java_com_audio ...

  9. 深入浅出,聊聊实时音视频中的回声消除与降噪

    在实时音频互动场景中,回声消除.降噪.自动增益(即 3A 算法)是直接影响音质和体验的重要环节之一.如何降低计算量,提升处理效率,如何兼容更多的设备.环境等,让3A 算法可以适应更多场景等一系列问题是 ...

最新文章

  1. 别名的应用(New-Alias)
  2. 将近400篇原创后,有三AI喊你正式加入来不来?
  3. 深入体验JavaWeb开发内幕——简述JSP中的自定义标签叫你快速学会
  4. Effective Java~26. 不要使用 raw type
  5. ruby array_Ruby中带有示例的Array.keep_if方法
  6. silverlight动态创建WCF服务
  7. 【专栏精选】实战:使用LeanCloud上传玩家分数,实现排行榜
  8. 直击标贝科技WAIC2019:深耕语音合成与数据服务 助力语音场景完美落地
  9. 参与到开源项目中乐趣
  10. lt;转载自刘佳ID:freedom0203和waretgt; C++中成员初始化列表的使用
  11. 2022前端CSS经典面试题
  12. 小白如何自学成为产品经理?
  13. 光盘出租系统mysql_数据库课程设计--碟片出租系统
  14. 键盘哪个键是锁定计算机,键盘锁是哪个键 锁键盘的是哪个键 - 云骑士一键重装系统...
  15. CS-Notes 知识清单 备战版
  16. 开放、自由、参与 ------记“武汉大学开源技术俱乐部成立仪式暨Sun技术讲坛”...
  17. C++整型(short,int,long,longlong)
  18. 成人想补充蛋白质,光吃鸡蛋就够了?鸡蛋和蛋白粉哪个好一点?
  19. ISO14443-3
  20. 一个老的游戏,据说全世界只有不到4000人可以走出房间.密室逃脱--之“天蓝色房间”...

热门文章

  1. ajax回调给全局变量,jquery.Ajax回调成功后数据赋值给全局变量的问题
  2. 宝塔面板的ftp无法使用解决
  3. 「雕爷学编程」Arduino动手做(28)——RGB全彩LED模块
  4. tensorflow模型在实际上线进行预测的时候,使用CPU工作
  5. ReactiveCocoa详解
  6. package 和 install的区别
  7. struct数组初始化
  8. ES6 let和const命令(3)
  9. 公安网络安全部门封杀的2000家淘宝钓鱼网站
  10. deleted 表和 inserted 表