最近我开始知道这一点 - 如果派生类重新定义基类成员方法,那么所有具有相同名称的基类方法都会隐藏在派生类中。
#include<iostream>
using namespace std;
class Base
{
public:
int fun()
{
cout<<"Base::fun() called";
}
int fun(int i)
{
cout<<"Base::fun(int i) called";
}
};
class Derived: public Base
{
public:
int fun()
{
cout<<"Derived::fun() called";
}
};
int main()
{
Derived d;
d.fun(5); // Compiler Error
return 0;
}
错误:在函数“int main()”中:第 30 行:错误:没有匹配函数调用“Derived::fun(int)”编译由于 -Wfatal 错误而终止。
但只想知道背后的原因?为什么它不调用基类的 fun(int i) 方法,因为派生类是从基类派生的