2.0 C++远征:隐藏

4-1隐藏

1.隐藏的触发条件:

继承 成员同名 隐藏

派生类的成员函数、成员变量与基类的重名时,基类的重名成员函数和成员变量会被隐藏。

2.如何访问被隐藏的成员

若要在派生类中调用重名的基类的成员函数、成员变量,须在成员前面加“基类名::”

//Soldier.h
class Person{
public:
    void play();        // 同名成员函数
protcted:
    string m_strName;
    int m_iAge;         // 同名成员变量
}

class Soldier : public Person{
public:
    void play();        // 同名成员函数
    void work();
protcted:
    int m_iCode;
    int m_iAge;         // 同名成员变量
}

//Soldier.cpp
#include "Person.h"
void Soldier::work(){
    m_iAge = 25;        // 调用派生类自己的成员变量
    Person::m_iAge = 35; // 调用基类中的重名成员变量要在前面加类名和域作用符::
}

//main.cpp
int main(){
    Soldier soldier;
    soldier.play();             // 调用派生类自己的成员函数
    soldier.Person::play();     // 调用基类中的重名成员函数要在前面加类名和域作用符::
  
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容