AUTOSAR C++14 Rule A10-2-1
Non-virtual public or protected member functions shall not be redefined in derived classes
説明
ルール定義
Non-virtual public or protected member functions shall not be redefined in derived classes.
根拠
非バーチャル パブリック関数または保護されているメンバー関数が派生クラスで再定義されると、派生クラスの新しい定義により、基底クラスの定義がオーバーライドされるのではなく、隠されます。派生クラスで関数が隠されると、同じ階層の異なるクラスを処理するための共通インターフェイスを実装できず、不必要な複雑度やエラーが発生します。このような動作は予期されておらず、解決が難しいバグにつながる可能性があります。
プライベート継承による関数または基底クラスでプライベートである関数の再定義は、このルールの影響を受けません。
Polyspace 実装
Polyspace® は、派生クラスの非バーチャル メンバー関数の再定義にフラグを設定します。Polyspace は、デストラクターのこの欠陥を報告しません。
許容可能と判断した再定義を正当化するには、注釈を使用します。コードへの注釈付けと既知の結果または許容可能な結果の非表示を参照してください。
トラブルシューティング
ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: 派生クラス |
| カテゴリ: Required、Automated |
バージョン履歴
R2019a で導入