最新回答 / 慕沐6594187
初始化列表是初始化成员变量, 而继承体系中 ,子类的构造函数需要调用父类的构造函数(在子类产生一个父类对象),从而才能对父类对象虚函数重写(也就是对父类对象虚表的覆盖)
2016-08-31
最新回答 / 慕移动2313051
因为test1是直接以类对象作为实参,在执行时会产生一个临时对象,函数执行完后会自动销毁,所以你看到了~person();但test2和test3是以指针和引用作为函数实参,在执行时不会产生新对象,所以函数执行完不存在释放,相对于直接以对象作为实参的情况,这两种效率更高
2016-08-19
最新回答 / 慕粉3657463
public protected private 共有继承 public protected 不可见 私有继承 private private 不可见 保护继承 protected protected 不可见
2016-07-28
最新回答 / 兮蓅
首先,Soldier类保护继承Person类,Infantry公有继承Soldier类。这个时候Soldier的对象不能调用Person类中的work成员函数,说明Person中数据成员和成员函数不在其(Soldier)public下(因为Person中work的访问属性为public,如果是公有继承肯定可以访问)。那就剩下保护继承(私有继承情况更是不能)了。而Infantry是公有继承Soldoer类,如果Infantry中成员可以访问Person中的数据成员和成员函数也就说明了Soldier类中的成员...
2016-07-04
最赞回答 / Sorenly
上面同学也说了,但我猜测,为什么不能传递呢,是由于虚继承的时候,为了避免多次出现Person的定义以及成员的传递,它干脆强制将顶层父类的成员以影印的方式传递一份下来,这样子就能避免你往顶层父类传递参数的时候,再次往下传到子类时出现重复。例如你图片中的情况,实际上就有两个顶层父类传下来的color,如果不禁止你往回传递参数的话,无法将 只需要一份的color成员 传递参数值的‘权利’给Worker或Farmer,这时如果都有权利望顶层父类Person传递color的话,势必会导致MigrantWorker有...
2016-06-05
最赞回答 / 慕粉3226999
只有在出现隐藏现象,即子类与父类中有同名方法时,才使用::形式表示是父类的方法还是子类的方法,本例中的printColor方法并没有出现隐藏现象
2016-06-05