似乎我们不能在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 :(得分:1)
它将取决于您使用的编译器。
对于gcc和clang,您需要将标志-std=c++11
传递给编译器。
支持成员初始化程序和其他c ++ 11功能:
答案 1 :(得分:0)
这是正确的,并在C ++ 11标准中引入。这个概念称为in-class member initializer
您可以查看关于此概念的Stroustrup FAQ链接: