-1
#include <iostream>

class X {
    public:
    int a;

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

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

  }

为什么是 2130567168?不是0?

4

1 回答 1

8

它可以是任何东西。由于x.a未初始化,它的值为Indeterminate
在 C++ 中,类成员没有默认初始化。它们需要显式初始化,在没有任何初始化的情况下它们保持未初始化。使用任何此类未初始化的类成员只会给您的程序带来一件事,即Undefined Behavior

您需要使用Member Initializer listx.a初始化一些有意义的东西。

class X 
{
    public:
        int a;
         X(int i):a(i){}
         X():a(0){}
};
于 2013-05-07T03:59:38.133 回答