C++面向对象 运行结果是什么?原因? 30

 我来答
lllabbb
2017-06-16 · TA获得超过183个赞
知道小有建树答主
回答量:70
采纳率:100%
帮助的人:48万
展开全部
先说答案:10
15
20
这个题目给出的继承模型为菱形继承,菱形继承是一种典型的虚拟继承,C++对菱形继承可能产生的二义性做了特殊的处理,即虚基类构造函数由最底层派生类调用,也就是谁的实例谁调用,比如题目中当实例化C类对象时A类的构造函数只由C实例化时调用,B1和B2均不调用或者说调用无效。这是菱形继承的一些基础知识。
原因:由上面对菱形继承的基础知识的讲解,可以得出A类成员a赋值为10,故在调用c.get()时,由于C类中无get函数,B1,B2均未对A类中get函数进行重写覆盖,所以此时调用的是A类的get函数,即打印出a,下面两行分别调用B1,B2的getB函数打印出b1和b2。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式