最赞回答 / qq_慕前端0595576
这么说吧,父类中的protected:m_strName被子类继承了,但由于子类也定义了一个m_strName,这就使得父类的m_strName被隐藏,当然,父类的m_strName和子类的m_strName都在子类对象所在的空间里,要想访问父类的m_strName需要用到Person::m_strName。 父类是接口,继承来的东西也会复制到子类中,无论是soldier.m_strName还是soldier.Person::m_strName,操作的数据都是soldier对象所在空间里的...
2018-02-11
最赞回答 / 慕斯6136978
并不是这样的,战士类中private中继承人类的数据成员,比如name,在战士中变成了private下的,所以战士类的派生类步兵类的成员函数怎么能访问到其基类的name呢,就像你父亲的私房钱是他私有的,你就不能去访问了
2017-12-16
最赞回答 / 慕的地0332996
宏定义是解决重定义的问题,重定义就是如果在多个头文件中引用了同一个或多个头文件,编译器在编译的时候会多次编译头文件,加上宏定义使用#ifdef 来判断一下就可以避免这种情况
2017-11-14
最赞回答 / qq_David尧尧_0
首先 子类中如果有跟父类中同名的成员函数,不会出现重载,会继承该成员函数,只是在调用时有区别:子类对象.同名函数 调用的是子类中自己定义的同名成员函数子类对象.父类::同名函数 调用的是继承的同名成员函数
2017-10-17
已采纳回答 / C_can
is a”代表的是类之间的继承关系,“has a”代表的是对象和它的成员的从属关系。c++还有另一种实现has-a关系的途径----私有继承。使用私有继承,基类的公有成员和保护成员都将成为派生类的私有成员。这意味着基类方法将不会成为派生对象公有接口的一部分,但可以在派生类的成员函数中使用它们。使用公有继承,基类的公有方法将成为派生类的公有方法。简而言之,派生类将继承基类的接口,这是is-a关系的一部分。使用私有继承,基类的公有方法将成为派生类的私有方法。简而言之,派生类不能继承基类的接口。正如从被包含对象...
2017-10-16