成员变量不是由构造函数或初始化表达式初始化的。 请确保所有变量在构造结束时初始化。 有关详细信息,请参阅 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
C26494