2013-05-07 103 views
-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++?

+4

“运气” - 因为如果它在这里为0,那么您可能已经依赖它了! – user2246674 2013-05-07 04:00:05

+1

那么,你期望它是什么? – 2013-05-07 04:06:58

+3

我猜测OP对Java有一些经验,其中整数_fields_被初始化为0,在这种情况下,一个好的答案可能是“因为C++不同于Java”#justsayin – 2013-05-07 04:11:22

回答

8

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

您需要使用Member Initializer listx.a初始化为有意义的值。

class X 
{ 
    public: 
     int a; 
     X(int i):a(i){} 
     X():a(0){} 
}; 
相关问题