AUTOSAR C++14 Rule A5-2-1
dynamic_cast should not be used
説明
ルール定義
dynamic_cast should not be used.
根拠
dynamic_cast は、クラスへのポインターまたは参照の型を、継承階層に沿って変換するために使用します。たとえば、基底クラスへのポインターを派生クラスへのポインターに変換します。この変換では、実行時に実施される型チェックによるオーバーヘッドが発生します。このオーバーヘッドは、リアルタイム システムの低いメモリ要件、速度要件、および予測可能なパフォーマンス要件に適合しません。
アプリケーションで動的キャストを回避できない場合は、カスタム実装を使用したキャスト実行を検討してください。最上位の派生クラス、または関数とテンプレートがオーバーロードしている静的多態性にキャストする場合は、バーチャル関数の使用も検討してください。後者の場合は、型がコンパイル時に解決され、オーバーヘッドが回避されます。
Polyspace 実装
Polyspace® は、コード内の dynamic_cast のすべての使用にフラグを設定します。
トラブルシューティング
ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: 式 |
| カテゴリ: Advisory、Automated |
バージョン履歴
R2020b で導入