2013-05-07 91 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){} 
}; 
相關問題