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

为什么战士类中private中继承人类的数据成员,不能被步兵类的成员函数访问?是因为private继承只能继承到一级子类,而不能继承到二级子类吗?

为什么战士类中private中继承人类的数据成员,不能被步兵类的成员函数访问?是因为private继承只能继承到一级子类,而不能继承到二级子类吗?

正在回答

3 回答

战士类先私有继承了人类,即人类的数据成员和成员函数都继承到了战士类的private限定符下,此时步兵类公有继承战士类(公有继承是不会继承父类private下的数据成员和成员函数的),因此步兵类无法访问。

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

并不是这样的,战士类中private中继承人类的数据成员,比如name,在战士中变成了private下的,所以战士类的派生类步兵类的成员函数怎么能访问到其基类的name呢,就像你父亲的私房钱是他私有的,你就不能去访问了

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

应该说,private保护下的内容意思就是不允许被继承的,所以步兵类并没有继承到人类private中的内容,所以战士继承自步兵类之后,也不会获得步兵类private的内容,自然就无法访问到人类private的内容了。

Person(private)->Solider(NULL)->Ifinite(Null)

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

举报

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

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

进入课程

为什么战士类中private中继承人类的数据成员,不能被步兵类的成员函数访问?是因为private继承只能继承到一级子类,而不能继承到二级子类吗?

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

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

帮助反馈 APP下载

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

公众号

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