そのため、しばらくの間 C++ でプログラミングを行っていましたが、動的キャストを使用して、抽象クラス ポインターのポインターを別の具象クラス ポインターにキャストすることは悪い習慣であると言われました。
Shape* GeneralShape = new Triangle(...);
Triangle* triPtr = dynamic_cast<Triangle*>(GeneralShape);
Shape は抽象クラスで、Triangle はそれを継承します。
動的キャストの使用は、継承されたクラスの 1 つが少し異なりすぎて、抽象クラスに含まれる一般的な関数以上のものを必要とする場合に、メンバー関数にアクセスする便利な方法のように思えます。何が悪いのか、実行時のポリモーフィズムのオーバーヘッドは何なのかと思っていました。