#include <iostream>
class X {
public:
int a;
};
int main(int argc, char *argv[]) {
X x;
std::cout<<x.a<<std::endl;
}
为什么是2130567168?不是0?
答案 0 :(得分:8)
它可能是任何东西。由于x.a
未初始化,因此其值为不确定。
在C ++中,类成员不是默认初始化的。他们需要显式初始化,在没有任何保持未初始化的情况下。
使用任何此类未初始化的类成员只为您的程序提供一件事,未定义的行为。
您需要使用 Member Initializer list 将x.a
初始化为有意义的内容。
class X
{
public:
int a;
X(int i):a(i){}
X():a(0){}
};