作者:V体验_数码IT | 来源:互联网 | 2023-05-26 15:39
我看到一个代码,程序员使用花括号来初始化变量
int var{ 5 };
而不是使用赋值运算符
int var = 5;
我知道使用花括号为lhs变量赋值是一种C++ 11语法.使用这两者有什么区别吗?
谢谢你的回复.
1> Barry..:
它们是不同类型的初始化:
T a{b}; // list initialization
T a = b; // copy initialization
T a(b); // direct initialization
int
s 没有区别,但其他类型肯定存在差异.例如,如果构造函数是复制初始化可能会失败explicit
,而其他两个会成功.列表初始化不允许缩小转换,但对于其他两个,这些都很好.