有人给了我以下代码(一部分):
struct MyStruct
{
int x = {};
int y = {};
};
我以前从未见过这种语法,用{}
初始化是什么意思?
答案 0 :(得分:3)
这是default member initializer(自C ++ 11起),
通过默认的成员初始化程序,该初始化程序是成员声明中包含的大括号或等于初始值设定项,如果从构造函数的成员初始化程序列表中省略了该成员,则使用该初始值设定项。
初始化本身是copy-list-initialization(自C ++ 11起),实际上,数据成员x
和y
将被值初始化(并在构建时进行零初始化) -in类型)到0
。
答案 1 :(得分:1)
自C ++ 11标准以来,有两种方法来初始化成员变量:
使用构造函数初始化列表作为“常规”:
struct Foo
{
int x;
Foo()
: x(0)
{
}
};
使用新的 inline 初始化,其中成员使用常规初始化语法获取其“默认”值:
struct Foo
{
int x = 0;
};
这两种方法都适用于许多等效的值和类型。