最赞回答 / pand0rao
不同继承方式的影响主要体现在:1、派生类成员对基类成员的访问控制。2、派生类对象对基类成员的访问控制。三种继承方式:1、公有继承(public)① 基类的public和protected成员的访问属性在派生类中保持不变,但基类的private成员不可访问。② 派生类中的成员函数可以直接访问基类中的public和protected成员,但不能访问基类的private成员。③ 通过派生类的对象只能访问基类的public成员。2、私有继承(private)① 基类的public和protected成员都以pri...
2019-08-22
已采纳回答 / AlexPan0610
编译器给出的提示是ChildLabourer类没有m_strName和m_iAge成员变量。推测是子类的初始化列表先于父类的构造函数执行,否则无法将参数传递给父类。因此在执行ChildLabourer的初始化列表时,父类(Worker, Children)的构造方法尚未执行,当然成员变量(m_strName, m_iAge)也就不存在,因此不能在子类的初始化列表中初始化父类的成员变量。
2019-08-05
最赞回答 / 莫渡
这是因为Worker和Children类中都有从person类继承的eat,ChildLabourer不知道自己调用的是哪个父类的eat函数。要解决这个问题,就要用到虚继承,就是把class Worker : public Person和class Children : public Person改成class Worker : virtual public Person和class Children : virtual public Person。具体你可以看这一章的课程。
2019-06-15
老师说的很好,赞赞赞https://blog.csdn.net/zaishuiyifangxym/article/details/88680380这是我做的笔记 和源代码 互相学习 共同进步
最赞回答 / qq_慕仔4162485
这种调用是在父类person和子类soldier中含有同名成员函数或者数据成员时用来区分的。如果直接写soldier.work()调用的是soldier中的work函数,而从父类继承来的work函数会被隐藏。若想调用父类继承来的work函数,在调用时要加上父类名Person
2019-02-15