2014-03-25 83 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