-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という 1 つのことだけが与えられます。

Member Initializer listx.aを使用して、意味のあるものに初期化する必要があります。

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