在学习C++的继承与多态过程中我们接触到了隐藏与覆盖的概念,那么隐藏和覆盖分别做了些什么?
在C++的继承中我们知道派生类可以继承基类的成员变量和成员函数,那么当派生类继承基类的成员变量和成员函数时自己也有同名的成员变量和同名且同参数列表的成员函数时是如何处理的呢?
遇到这类情况C++的处理方式为隐藏和覆盖,下面就来介绍隐藏和覆盖。
隐藏
- 派生类将继承的基类的同名的成员变量和成员方法隐藏起来,通过派生类只能访问到自己的成员变量和成员方法。若想要访问基类的成员变量和成员方法需加上基类的作用域。隐藏以后的直接效果就是:无论在派生类的内部或者外部(通过派生类成员)访问该成员;全都是访问派生类的同名成员; 如果在派生类内部或者外部(通过派生类成员)访问同名的成员函数,则需要根据函数调用的规则来调用派生类的同名成员函数;
例如:
#include<iostream>
using namespace std;
class A
{
public:
vo