使用C ++ 11提供了一种初始化和声明变量的新方法。
原始
int c_derived = 0;
C ++ 11
int modern{0};
如果有的话,每种方法的优缺点是什么?为什么要实施新方法?编译器是否做了不同的事情?
答案 0 :(得分:6)
你错了 - 在旧版本的C ++中可以使用int modern(0)
形式(带圆括号),并且继续在C ++ 11中可用。
在C ++ 11中,新表单使用大括号来提供统一的初始化,所以你说
int modern{0};
这种新形式的主要优点是它可以在任何地方一直使用。它清楚地表明你正在初始化一个新对象,而不是调用一个函数,或者更糟糕的是,declaring one。
它还提供了与C风格(“聚合”)结构初始化的语法一致性,形式为
struct A
{
int a; int b;
};
A a = { 1, 2 };
当使用花括号形式时,对于缩小数字类型的转换,还有更严格的规则。
答案 1 :(得分:0)
使用大括号只是尝试在C ++ 11中引入通用初始化。
现在您可以使用大括号初始化数组,变量,字符串,向量。