我已经在C++
中编写了以下程序:
class A {
public:
A() {}
void foo() { cout << "A::foo" << endl; }
};
class B : public A {
public:
B() {}
void foo() override { cout << "B::foo" << endl; }
};
由于某些原因,B::foo()
不会覆盖A::foo()
:
错误:“ void B :: foo()”标记为“覆盖”,但没有覆盖
如果我删除了override
关键字并运行:
int main()
{
A* a = new B();
a->foo();
return 0;
}
它打印:A::foo
。为什么不覆盖?