オーバーロードされたバーチャル関数の一部のみをオーバーライドします
特定名をもつ継承されたバーチャル関数の一部をクラスがオーバーライド
説明
この欠陥は、以下の場合に発生します。
基底クラスに、名前が同じでシグネチャが異なる複数の
virtualメソッドがある (オーバーロード)。基底クラスから派生したクラスが、それら
virtualメソッドの少なくとも 1 つをオーバーライドしているが、すべてをオーバーライドしてはいない。
リスク
派生クラスがオーバーライドしていない virtual メソッドは隠されています。そうしたメソッドを、派生クラスのオブジェクトを使用して呼び出すことはできません。
修正方法
基底クラスでのオーバーロードが必要かどうかを確認します。必要である場合は、次のような解決法があります。
派生クラスで 1 つの
virtualメソッドがオーバーライドされている場合は、そのメソッドと同じ名前をもつ、基底クラスからのすべてのvirtualメソッドをオーバーライドします。それ以外の場合は、派生クラスの宣言に
usingという行を追加します。この方法により、基底クラスのメソッドを派生クラスのオブジェクトを使用して呼び出すことができます。Base_class_name::method_name
例
結果情報
| グループ: オブジェクト指向 |
| 言語: C++ |
| 既定値: 手書きコードはオン、生成コードはオフ |
コマンド ライン構文: PARTIAL_OVERRIDE |
| 影響度: Medium |
バージョン履歴
R2015b で導入