初始化x1
和x2
之间有什么区别?
struct X {
int i;
};
void func(){
X x1 = {2};
X x2 {2};
cout << x1.i << ", " << x2.i << endl;
}
答案 0 :(得分:2)
X x1 = {2};
是copy-list-initialization。
X x2 {2};
是直接初始化。
两种语法都执行聚合初始化,因为X
是聚合。
有什么区别
使用直接初始化形式不能省略大括号(直到C ++ 14)。
通常,复制初始化仅考虑非显式构造函数和转换函数,而直接初始化也考虑显式构造函数。但是,这不适用于聚合初始化。
有和没有=运算符
此处的等号(=)字符实际上不是运算符。它是复制初始化语法的一部分。