最赞回答 / 大妮妮1051134
因为migrantworker可以从farmer 和 worker继承,而farmer和worker都是从person继承的,这样migrantworker就含有两个person中的数据,这是不被允许的,所以采用虚继承避免冗余数据。 migrantworker只是包含farmer一次,不存在冗余,所以不需要虚继承
2016-12-07
最新回答 / 朵小妖儿
不会的,因为在4.5节中有说到,只有void test1(Person p)这个对象的会先实例化一个对象p,来调用play,并在执行完之后自动销毁,这样就会有一个析构函数,之后的两个都没有实例化和销毁的过程,所以效率高,也不会执行析构函数,但是如果加了虚析构函数,就会把父类和子类的内存一起释放了
2016-10-09
最新回答 / 慕沐6594187
初始化列表是初始化成员变量, 而继承体系中 ,子类的构造函数需要调用父类的构造函数(在子类产生一个父类对象),从而才能对父类对象虚函数重写(也就是对父类对象虚表的覆盖)
2016-08-31