AUTOSAR C++14 Rule A10-3-2
Each overriding virtual function shall be declared with the override or final specifier
説明
ルール定義
オーバーライドするバーチャル関数は、オーバーライド指定子または最終指定子を使用して宣言するものとします。
根拠
バーチャル関数は、クラス階層にポリモーフィックな動作を実装します。基底クラスで関数を virtual として宣言すると、派生クラス内に同じパラメーター リストをもつすべての関数のインスタンスによって基底関数が暗黙的にオーバーライドされます。ポリモーフィックな関数の実装をコンパイラによるこの暗黙的アクションに依存している場合は、エラーにつながる可能性があります。次に例を示します。
- 関数が誤って - virtualになる可能性があります。これは、その署名が基底クラス内のバーチャル関数と一致するためです。
- 関数が誤って非バーチャルになる可能性があります。これは、パラメーター リストに違いがあるためです。 
オーバーライドするバーチャル関数を暗黙的に宣言すると、コードが読みにくくなる可能性もあります。
不注意によるエラーを回避し、可読性を向上させるには、オーバーライドする関数のすべての宣言で指定子の override と final を明示的に使用します。
Polyspace 実装
Polyspace® は、次のすべての文に該当する場合に、virtual 関数の宣言にフラグを設定します。
- 関数が派生クラスに属している。 
- 関数の署名と基底クラス内のバーチャル関数の署名が一致する。 
- 関数の宣言に指定子の - overrideまたは- finalが存在しない。
トラブルシューティング
ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: 派生クラス | 
| カテゴリ: Required、Automated | 
バージョン履歴
R2020a で導入