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;
}