基底クラスの代入演算子が呼び出されていません
コピー代入演算子が、基底サブオブジェクトのコピー代入演算子を呼び出さない
説明
この欠陥は、派生クラスのコピー代入演算子が、その基底クラスのコピー代入演算子を呼び出さなかった場合に発生します。
リスク
この欠陥が発生すると、基底クラスのデータ メンバーを派生クラスの代入演算子で明示的に初期化しない限り、演算子は、基底クラスの既定のコンストラクターを使用してメンバーを暗黙的に初期化します。したがって、基底クラスのデータ メンバーに正しい値が代入されなくなる可能性があります。
ユーザー クラスで、代入演算子により 2 つのオブジェクト間で完全な代入が実行されると予想される場合、想定外の結果となる可能性があります。
修正方法
派生クラスのコピー代入演算子から、基底クラスのコピー代入演算子を呼び出します。
基底クラスのデータ メンバーが private
ではなく、基底クラスのデータ メンバーを派生クラスのコピー代入演算子で明示的に初期化する場合でも、この明示的な初期化を、基底クラスのコピー代入演算子の呼び出しで置き換えます。それ以外の場合は、明示的な初期化を保持する理由を決定します。
例
結果情報
グループ: オブジェクト指向 |
言語: C++ |
既定値: 手書きコードはオン、生成コードはオフ |
コマンド ライン構文: MISSING_BASE_ASSIGN_OP_CALL |
影響度: High |
バージョン履歴
R2015b で導入