2014-03-25 84 views
0

看來我們不能在C++中給出struct成員的默認值,但是我發現下面的代碼可以編譯和運行,爲什麼?我錯過了什麼嗎?C++中struct成員的缺省值

struct Type { 
    int i = 0xffff; 
}; 

計劃:

#include <iostream> 

using namespace std; 
struct Type { 
    int i = 0xffff; 
}; 
int main() { 
    // your code goes here 
    Type val; 
    std::cout << val.i << std::endl; 
    return 0; 
} 
+0

你的編譯器是否支持C++ 11標準? –

+0

這種類型的初始化被添加到C++ 11中。這意味着我們可以在一個地方初始化,而不是在每個構造器中初始化。 – Ben

+0

@tmp是的,請點擊上面的超鏈接。 – prehistoricpenguin

回答

1

這是要取決於你使用的編譯器。

對於gcc和clang,您需要將標誌-std=c++11傳遞給編譯器。

支持成員的初始值和其他C++ 11個特徵:由於4.7

  • GCC。見here
  • 鏗鏘自3.0。請參閱here
  • 2013版本的Visual Studio編譯器。請參閱here