1

我听说我可以使用以下语法初始化一个值:

int foo = {5};

此外,我可以使用更少的代码来做同样的事情:

int foo{5};

那么,使用它们有什么优点/缺点吗?这是一个好习惯,还是使用标准更好:?

int foo = 5;
4

1 回答 1

5

你举的三个例子,不太一样。统一初始化(带有 的初始化{ })不允许缩小转换范围

int i = 5.0;   // Fine, stores 5
int i{5.0};    // Won't compile!
int i = {5.0}; // Won't compile!

此外,复制初始化(带有 的那些=)不允许显式构造函数。

新的 C++11 特性统一初始化及其表亲初始化器列表(将大括号初始化语法推广到例如标准容器)是一个具有许多怪癖的棘手动物。@Praetorian 的评论中提到的最令人头疼的解析只是其中之一,元组和多维数组是另一个潘多拉魔盒。

于 2013-04-15T22:02:04.837 回答