为什么a是2130567168 for a c ++?

时间:2013-05-07 03:58:47

标签: c++ initialization

#include <iostream>

class X {
    public:
    int a;

};
int main(int argc, char *argv[]) {

    X x;
    std::cout<<x.a<<std::endl;

  }

为什么是2130567168?不是0?

1 个答案:

答案 0 :(得分:8)

它可能是任何东西。由于x.a未初始化,因此其值为不确定
在C ++中,类成员不是默认初始化的。他们需要显式初始化,在没有任何保持未初始化的情况下。 使用任何此类未初始化的类成员只为您的程序提供一件事,未定义的行为

您需要使用 Member Initializer list x.a初始化为有意义的内容。

class X 
{
    public:
        int a;
         X(int i):a(i){}
         X():a(0){}
};