コンストラクターでメンバーが初期化されません
コンストラクターでクラスのメンバーの一部が初期化されない
説明
この欠陥は、クラス コンストラクター内の少なくとも 1 つの実行パスで、クラスのデータ メンバーの一部が初期化されなかった場合に発生します。
この欠陥は、次の場合には表示されません。
コンストラクターが空。
初期化されていないメンバーがコードで使用されていない。
リスク
コンストラクターが初期化されていないメンバーを後で読み取ると、意図しない値になる可能性があります。
コンストラクター内のすべてのメンバーを初期化すると、ユーザー クラスの使用が簡単になります。個別のメソッドを呼び出してメンバーを初期化してからそのメンバーを読み取ると、値が初期化されていないという事態は回避できます。しかし、ユーザー クラスを使用する第三者は、初期化メソッドが呼び出される "前に" クラス メンバーを読み取ることができます。コンストラクターはクラスのオブジェクトが作成される際に呼び出されるので、すべてのメンバーをコンストラクターで初期化しておくと、初期化されてない値が後で見つかることはなくなります。
修正方法
ベスト プラクティスとして、すべてのメンバーをコンストラクターで、できれば初期化リストを使って初期化します。
例
結果情報
グループ: オブジェクト指向 |
言語: C++ |
既定値: オフ |
コマンド ライン構文: NON_INIT_MEMBER |
影響度: Medium |
バージョン履歴
R2015b で導入