c ++中struct成员的默认值

时间:2014-03-25 02:53:08

标签: c++11 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;
}

2 个答案:

答案 0 :(得分:1)

它将取决于您使用的编译器。

对于gcc和clang,您需要将标志-std=c++11传递给编译器。

支持成员初始化程序和其他c ++ 11功能:

  • gcc自4.7。见here
  • clang从3.0开始。见here
  • Visual Studio编译器的2013版本。见here

答案 1 :(得分:0)

这是正确的,并在C ++ 11标准中引入。这个概念称为in-class member initializer

您可以查看关于此概念的Stroustrup FAQ链接:

http://www.stroustrup.com/C++11FAQ.html#member-init