为了账号安全,请及时绑定邮箱和手机立即绑定

子类与顶层父类间的值传递

为什么这里的MigrantWorker传入的yellow的颜色值可以传递到顶层父类Person中,能够打印出来,而在后面的用了virtual虚继承后打印出来的就是默认值blue?

正在回答

2 回答

上面同学也说了,但我猜测,为什么不能传递呢,是由于虚继承的时候,为了避免多次出现Person的定义以及成员的传递,它干脆强制将顶层父类的成员以影印的方式传递一份下来,这样子就能避免你往顶层父类传递参数的时候,再次往下传到子类时出现重复。

例如你图片中的情况,实际上就有两个顶层父类传下来的color,如果不禁止你往回传递参数的话,无法将 只需要一份的color成员 传递参数值的‘权利’给Worker或Farmer,这时如果都有权利望顶层父类Person传递color的话,势必会导致MigrantWorker有两个color。因此它干脆不让你传递回去了。

3 回复 有任何疑惑可以回复我~

虚继承中,顶层父类无法接受子类的参数传递,所以只能打印出来默认值blue,老师在讲课的时候稍微提了下。如果有兴趣的话可以自己通过编程验证一下。

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之继承篇
  • 参与学习       75188    人
  • 解答问题       251    个

继承,C++面向对象三大特征之一,通过编码实践方式讲解到操作层面

进入课程

子类与顶层父类间的值传递

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号