C ++:使用x {0}进行变量初始化

时间:2013-12-05 05:55:33

标签: c++

我看到了一个对我来说很新的初始化语法。我搜索谷歌和这里,但我找不到有用的东西。

int a = 0;
int a = {0};
int a{0}; // <- this is new for me    

为什么我需要第三种风格而其他风格存在?每个人之间有什么区别?

感谢。

2 个答案:

答案 0 :(得分:4)

您可能对C++11 initializer lists感兴趣。他们可能不会解释第三个例子,但它们很有用,特别是对于真正的类对象。

您的代码int a{0};在C ++ 11中称为uniform initialization。另请参阅most vexing parse wikipage(由Joe Z评论)。

花些时间至少阅读C++11 wikipage。 C ++ 11的新功能使它几乎与C ++ 03不同。

答案 1 :(得分:2)

这种初始化形式在C ++ 11中称为列表初始化

当与内置类型的变量一起使用时,列表初始化在某种程度上是不同的:如果初始化器可能导致信息丢失,则无法列出内置类型的初始化变量。

double pi = 3.1415926;
int a(pi); //fine
int a{pi}; //compile error