考虑以下简单的多态性......
class Parent {
public:
someFunc() { /* implementation A */ };
};
class Child : public Parent {
public:
someFunc() { /* implementation B */ };
};
int main ()
{
Parent* ptr;
ptr = new Parent();
ptr->someFunc();
delete ptr;
ptr = new Child();
ptr->someFunc();
delete ptr;
return 0;
}
据我所知,在这两种情况下都将调用实现 A。
根据 ptr 的动态类型,如何调用 someFunc 的“最衍生”实现?
在我的真实代码中,有许多子类型,因此使用 dynamic_cast 来检查每个子类是不切实际的。