【发布时间】:2011-10-07 07:29:12
【问题描述】:
我遇到了 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() 函数。
【问题讨论】:
标签: c++ inheritance virtual