最近、これを知りました-派生クラスが基本クラスのメンバーメソッドを再定義すると、同じ名前のすべての基本クラスメソッドが派生クラスに隠されます。
#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-errors によりコンパイルが終了しました。
しかし、その背後にある理由を知りたいですか?Derived クラスは Base から派生しているため、Base Class の fun(int i) メソッドを呼び出さないのはなぜですか