最赞回答 / Sorenly
上面同学也说了,但我猜测,为什么不能传递呢,是由于虚继承的时候,为了避免多次出现Person的定义以及成员的传递,它干脆强制将顶层父类的成员以影印的方式传递一份下来,这样子就能避免你往顶层父类传递参数的时候,再次往下传到子类时出现重复。例如你图片中的情况,实际上就有两个顶层父类传下来的color,如果不禁止你往回传递参数的话,无法将 只需要一份的color成员 传递参数值的‘权利’给Worker或Farmer,这时如果都有权利望顶层父类Person传递color的话,势必会导致MigrantWorker有...
2016-06-05
最赞回答 / 慕粉3226999
只有在出现隐藏现象,即子类与父类中有同名方法时,才使用::形式表示是父类的方法还是子类的方法,本例中的printColor方法并没有出现隐藏现象
2016-06-05
没必要那么抠字眼吧,老师说是按初始化列表的顺序执行父类的构造函数的,并且还用鼠标画了出来,有错吗?难懂你写代码时声明是一种顺序,定义又是另一种顺序?要是不信,自己动手敲一下不就知道了
2016-05-27
9:35讲错了,soldier对象不能“直接”访问person对象的成员,以为已经进行了private方式的继承。老师没说:不能“直接”
2016-05-23