课程
/后端开发
/C++
/C++远征之继承篇
这个地方不是子类继承的父类吗 那么子类通过Person::m_strName = "James"改变之后 应该改的只是自己继承过来的m_strName啊 为什么把父类的也改变了
2018-02-11
源自:C++远征之继承篇 4-3
正在回答
这么说吧,父类中的protected:m_strName被子类继承了,但由于子类也定义了一个m_strName,这就使得父类的m_strName被隐藏,当然,父类的m_strName和子类的m_strName都在子类对象所在的空间里,要想访问父类的m_strName需要用到Person::m_strName。 父类是接口,继承来的东西也会复制到子类中,无论是soldier.m_strName还是soldier.Person::m_strName,操作的数据都是soldier对象所在空间里的!
这节内容你没有听懂,你可以理解为父类和子类是两个不同的空间,soldier是用子类定义的,在soldier下先使用的空间是子类Soldier,要用到父类需要Person::m_strName = "James"
Person::m_strName = "James"修改的是父类中的变量,不是子类中的m_strName
举报
继承,C++面向对象三大特征之一,通过编码实践方式讲解到操作层面