我发现对类使用初始化列表语法的可能性取决于类字段是否具有默认值。为什么?
准确地说,考虑以下代码:
class S
{
public:
int a;
};
...
int a;
S s{ a };
它编译没有任何问题。但是,如果我向类字段添加默认值,它将停止构建:
class S
{
public:
int a = 0;
};
...
int a;
S s{ a };
错误 1 错误 C2440:“正在初始化”:无法从“初始化器列表”转换为“S”
为什么?还有什么影响这种构造函数的生成?