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;
}
原文地址:https://www.cnblogs.com/xiaoqingyang/p/6076973.html