-1
#include <iostream>
class X {
public:
int a;
};
int main(int argc, char *argv[]) {
X x;
std::cout<<x.a<<std::endl;
}
为什么是2130567168?不是0?为什么a是2130567168 for a C++?
#include <iostream>
class X {
public:
int a;
};
int main(int argc, char *argv[]) {
X x;
std::cout<<x.a<<std::endl;
}
为什么是2130567168?不是0?为什么a是2130567168 for a C++?
它可能是任何东西。由于x.a
未初始化,因此其值为不确定。
在C++中,类成员不是默认初始化的。他们需要明确的初始化,在没有任何未初始化的情况下。 使用任何此类未初始化的类成员只会给您的程序一件事,未定义的行为。
您需要使用Member Initializer list将x.a
初始化为有意义的值。
class X
{
public:
int a;
X(int i):a(i){}
X():a(0){}
};
“运气” - 因为如果它在这里为0,那么您可能已经依赖它了! – user2246674 2013-05-07 04:00:05
那么,你期望它是什么? – 2013-05-07 04:06:58
我猜测OP对Java有一些经验,其中整数_fields_被初始化为0,在这种情况下,一个好的答案可能是“因为C++不同于Java”#justsayin – 2013-05-07 04:11:22