C++语言程序设计

在派生类Derived1中，重定义了基类Base的成员函数g。运行该程序，我们可以看到：在派生类Derived1中，基类Base重载的函数f可以被使用。但是，在派生类Derived2中，重定义了基类Base两个重载的成员函数f中的一个，导致第二个重载的函数也不能用。在派生类Derived3中，改变了返回类型，基类Base的两个重载的成员函数f都不能用，派生类Derived4也表明：改变参数表也隐藏基类Base的两个重载的成员函数f。
在派生类重定义了基类重载的成员函数，通常会自动隐藏基类与该函数同名的其它重载的成员函数。
关于函数覆盖应该注意以下两点：
（1） 在派生类中覆盖了基类的成员函数后，基类的成员函数被隐藏。但是，基类的成员函数如果需要的话，仍然可以显式调用。例如，派生类B中成员函数g覆盖了基类成员函数g，但基类成员函数g仍然可以通过域运算符显式调用：
double B::g()
{
double res1 = A::g(); // 调用A中的函数g
…
}
（2） 在类外，基类的被覆盖的成员函数，也可以通过域运算符访问。例如：
Derived3 d3;
int x = d3. Base::f();