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

最新回答 / 慕沐6594187
初始化列表是初始化成员变量, 而继承体系中 ,子类的构造函数需要调用父类的构造函数(在子类产生一个父类对象),从而才能对父类对象虚函数重写(也就是对父类对象虚表的覆盖)

最新回答 / 慕粉1026331268
保护成员函数可以访问但不能修改

最新回答 / 慕移动2313051
因为test1是直接以类对象作为实参,在执行时会产生一个临时对象,函数执行完后会自动销毁,所以你看到了~person();但test2和test3是以指针和引用作为函数实参,在执行时不会产生新对象,所以函数执行完不存在释放,相对于直接以对象作为实参的情况,这两种效率更高

最新回答 / xiele
最后一句话没好好听吧,用vartual修饰后,不会给底层函数(person)传递参数,所以person只有最原始的默认参数。

最新回答 / 慕移动9181930
感谢支持,多多关注后续课程。可以同时使用的,我这边测试是正常的啊

最新回答 / 慕粉3657463
                  public          protected        private    共有继承    public          protected        不可见    私有继承    private         private            不可见    保护继承    protected    protected        不可见    

最新回答 / 兮蓅
首先,Soldier类保护继承Person类,Infantry公有继承Soldier类。这个时候Soldier的对象不能调用Person类中的work成员函数,说明Person中数据成员和成员函数不在其(Soldier)public下(因为Person中work的访问属性为public,如果是公有继承肯定可以访问)。那就剩下保护继承(私有继承情况更是不能)了。而Infantry是公有继承Soldoer类,如果Infantry中成员可以访问Person中的数据成员和成员函数也就说明了Soldier类中的成员...

最赞回答 / 慕粉1026331268
前面的没听怎么可能听得懂这个,有C的基础更好理解

最新回答 / 流岸枫火
并不是那个原因,你把代码放到vs里调试调试就知道了

最新回答 / 慕粉3456311
这是逻辑上的包含,不是数学上的包含,子类是基类的一种,而不是基类的一部分

最赞回答 / Sorenly
上面同学也说了,但我猜测,为什么不能传递呢,是由于虚继承的时候,为了避免多次出现Person的定义以及成员的传递,它干脆强制将顶层父类的成员以影印的方式传递一份下来,这样子就能避免你往顶层父类传递参数的时候,再次往下传到子类时出现重复。例如你图片中的情况,实际上就有两个顶层父类传下来的color,如果不禁止你往回传递参数的话,无法将 只需要一份的color成员 传递参数值的‘权利’给Worker或Farmer,这时如果都有权利望顶层父类Person传递color的话,势必会导致MigrantWorker有...

最赞回答 / 慕粉3226999
只有在出现隐藏现象,即子类与父类中有同名方法时,才使用::形式表示是父类的方法还是子类的方法,本例中的printColor方法并没有出现隐藏现象

最赞回答 / 慕容5123895
构造函数里无参,或者有参数且参数都有默认值叫构造函数吧。那么你People(string color)就不叫默认构造函数啦,所以就没啦。

最新回答 / 慕九州2325515
你是不是之定义了指针没有实例化对象比如:Person *p;  之后直接用p->
课程须知
本课程是C++初级课程 熟练掌握C++语言基础语法,如需要学习C++基础语法的可以看《C++远征之起航篇》、《C++远征之离港篇》、《C++远征之封装篇(上)》、《C++远征之封装篇(下)》
老师告诉你能学到什么?
1、什么是继承 2、基类和派生类的概念 3、继承的三种方式 4、多重继承和多继承 5、虚继承是怎么回事

微信扫码,参与3人拼团

微信客服

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

帮助反馈 APP下载

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

公众号

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

友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消