次の方法で共有


警告 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
};

関連項目

C26494