变量 “variable” 未初始化。 始终初始化成员变量 (type.6)。
注解
成员变量不是由构造函数或初始化表达式初始化的。 请确保所有变量在构造结束时初始化。 有关详细信息,请参阅 C++ Core Guidelines Type.6 和 C.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
};