假設我有一個代碼:
class A
{
public:
void f(int s) {}
};
class B:public A
{
public:
void f() {}
};
int main()
{ B ob;
ob.f(4);
}
那麼在這種情況下,編譯器會生成一個錯誤,「爲號召'沒有匹配功能B :: f(int)'「 但是B類已經繼承了A,因此B必須具有」void f(int s)「函數。不知道爲什麼編譯器在這裏產生錯誤?
您不應該問「編譯器如何」,而是「C++中的規則是什麼......」。 –