C++11带来了一种初始化和声明变量的新方法。
原创
int c_derived = 0;C++11
int modern{0};每种方法的优缺点是什么,如果有的话?为什么要实施新的方法?编译器会做什么不同的事情吗?
发布于 2013-12-16 04:32:03
您错了-- int modern(0)表单(带圆括号)在C++的旧版本中可用,并在C++11中继续可用。
在C++11中,新表单使用了花括号来提供统一的初始化,所以您可以这样说
int modern{0};这种新形式的主要优点是它可以在任何地方持续使用。它清楚地表明,您正在初始化一个新对象,而不是调用一个函数,或者更糟的是调用declaring one。
它还提供了与表单的C样式(“聚合”)结构初始化的语法一致性。
struct A
{
int a; int b;
};
A a = { 1, 2 };在使用花括号窗体时,对于缩小数值类型的转换也有更严格的规则。
发布于 2013-12-16 04:29:02
使用大括号只是试图在C++11中引入通用初始化。
现在您可以使用大括号来初始化数组、变量、字符串、向量。
https://stackoverflow.com/questions/20603403
复制相似问题