如果您的所有类/结构数据成员都缺少初始化程序,您可以使用统一的初始化语法来构造对象。
struct foo
{
int i;
float f;
};
...
foo bar{ 5, 3.141f };
但是如果一个或多个成员有初始化器,统一初始化语法就失效了。
struct foo
{
int i;
float f = 0;
};
...
foo bar{ 5, 3.141f }; // Compiler error.
我推测添加数据成员初始化程序会自动实现一个或多个默认构造函数,并抑制构造函数的默认实现initialization_list
。这是预期的标准吗?为什么它会这样工作?