成員變數不是由建構函式或初始化運算式初始化。 請確定所有變數都會在建構結束時初始化。 如需詳細資訊,請參閱 C++ 核心指導方針
Type.6
和
C.48
。
這項檢查是程式內檢查。 每當有非const 成員函式的函式呼叫時,檢查會假設此成員函式會初始化所有成員。 此啟發學習法可能會導致遺漏錯誤,並已就緒以避免誤判結果。 此外,當成員由非常數參考傳遞至函式時,檢查會假設函式會初始化成員。
程式碼分析名稱:
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