警告 C26495

变量 “variable” 未初始化。 始终初始化成员变量 (type.6)。

注解

成员变量不是由构造函数或初始化表达式初始化的。 请确保所有变量在构造结束时初始化。 有关详细信息,请参阅 C++ Core Guidelines Type.6C.48

此检查属于程序内检查。 每当发生对非常量成员函数的函数调用时,检查将假定此成员函数会初始化所有成员。 这种启发式方法可能会导致遗漏错误,并已到位以避免误报结果。 此外,在通过对函数进行非常量引用来传递成员时,检查会假定该函数会初始化该成员。

代码分析名称:MEMBER_UNINIT

示例

下面的示例生成警告 C26495,因为创建 MyStruct 对象时未初始化成员变量 value

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