警告 C26495
変数 'variable' が初期化されていません。 メンバー変数は必ず初期化してください (type.6)。
解説
メンバー変数は、コンストラクターまたは初期化子によって初期化されません。 すべての変数が構築の終わりまでに初期化されていることを確認します。 詳細については、「C++ Core Guidelines Type.6 および C.48 を参照してください。
このチェックは手続き型です。 非constメンバー関数の関数呼び出しがある場合、チェックでは、このメンバー関数がすべてのメンバーを初期化することを前提としています。 このヒューリスティックはエラーを見逃す可能性があり、誤検知の結果を避けるために配置されています。 さらに、メンバーが関数への非const参照によって渡されると、チェックは関数がメンバーを初期化することを前提としています。
コード分析名: MEMBER_UNINIT
例
次の例では、MyStruct
オブジェクトの作成時にメンバー変数value
が初期化されないため、警告 C26495 が生成されます。
struct MyStruct
{
int value;
MyStruct() {} // C26495, MyStruct::value is uninitialized
};
この問題を解決するには、クラス内初期化をすべてのメンバー変数に追加します。
struct MyStruct
{
int value{}; // empty brace initializer sets value to 0
MyStruct() {} // no warning, MyStruct::value is set via default member initialization
};