次の単純なポリモーフィズムを考えてみましょう...
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を使用して子クラスごとにチェックするのは実用的ではありません。