【发布时间】:2016-11-01 03:41:30
【问题描述】:
我发现对类使用初始化列表语法的可能性取决于类字段是否具有默认值。为什么?
确切地说,考虑以下代码:
class S
{
public:
int a;
};
...
int a;
S s{ a };
它编译没有任何问题。但是如果我在类字段中添加一个默认值,它就会停止构建:
class S
{
public:
int a = 0;
};
...
int a;
S s{ a };
错误 1 错误 C2440: 'initializing' : 无法从 'initializer-list' 转换为 'S'
为什么?还有什么影响这种构造函数的生成?
【问题讨论】:
标签: c++ c++11 initializer-list aggregate-initialization