C++の継承に問題があります。C++仮想関数が隠されています
私はクラスの階層構造を持っている:
class A {
public:
virtual void onFoo() {}
virtual void onFoo(int i) {}
};
class B : public A {
public:
virtual void onFoo(int i) {}
};
class C : public B {
};
int main() {
C* c = new C();
c->onFoo(); //Compile error - doesn't exist
}
私の質問は:なぜこれはコンパイルされませんか?私の理解は、CはonFoo関数をAから継承する必要があり、実際にはBのonFooの再定義を削除するとコンパイルされますが、g ++はCにonFoo()関数がないというエラーを返します。
+1 - いい説明。 – Mahesh