引用: Effective C++ 第3版
dynamic_castが必要になるのは、派生クラスのオブジェクトを操作するのに、その基底クラスのポインタか参照しか持たないときです。この問題を避けるのには、一般に、2つの方法があります。
...
まず、はじめから「派生クラスのポインタ(...)のみを格納するコンテナ」を用意し、使う方法です。
...
もう一つの方法は、派生クラスで定義するすべての関数を仮想関数として基底クラスに持たせ、その関数を使って派生クラスを操作するというものです。
関連キーワード?
- covariant return types @ SO:2