#include <iostream>
class X {
public:
int a;
};
int main(int argc, char *argv[]) {
X x;
std::cout<<x.a<<std::endl;
}
为什么是 2130567168?不是0?
#include <iostream>
class X {
public:
int a;
};
int main(int argc, char *argv[]) {
X x;
std::cout<<x.a<<std::endl;
}
为什么是 2130567168?不是0?
它可以是任何东西。由于x.a
未初始化,它的值为Indeterminate。
在 C++ 中,类成员没有默认初始化。它们需要显式初始化,在没有任何初始化的情况下它们保持未初始化。使用任何此类未初始化的类成员只会给您的程序带来一件事,即Undefined Behavior。
您需要使用Member Initializer listx.a
初始化一些有意义的东西。
class X
{
public:
int a;
X(int i):a(i){}
X():a(0){}
};