被调用的重写方法的版本取决于您是否关心“通过”基类或“通过”派生类调用函数。但是,我发现如果我调用了一个非重写的方法,并且重写的方法调用了一些被重写的函数,那么基类版本仍然被调用,即使我通过指向派生类的指针访问实例。有人可以解释为什么会这样吗?
代码:
class Base {
public:
void display() {
foo();
}
void foo() {
cout << "Base.foo()" << endl;
}
};
class Derived : public Base {
public:
void foo() {
cout << "Derived.foo()" << endl;
}
};
int main() {
Derived* derived = new Derived();
derived->display();
while (true) {}
}