我遇到了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應該從A繼承兩個onFoo函數 - 事實上,如果您刪除了B中onFoo的重新定義,則編譯 - 但g ++提供的錯誤是C沒有onFoo()函數。
+1 - 很好的解釋。 – Mahesh