以下はC++コードです:
#include<iostream>
using namespace std;
class Base {
public:
virtual int f() const { cout << "Base::f()\n"; }
virtual void f(string) const {}
virtual void g() const {}
};
class Derived4 : public Base {
public:
int f(int) const { cout << "Derived4::f()\n"; }
};
int main() {
string s ("hello");
Derived4 d4;
Base *br = &d4; //line 5
//br->f(1);//line 6
br->f();//line 7
br->f(s);//line 8
}
コードは正常に動作していますが、6行目はエラーです。コードは f() の基本バージョンを呼び出しています。また、派生クラスで関数を再定義すると、その関数のすべての基本クラス定義がすべて非表示になることも読みましたか? 私が間違っている?