C ++ 11变量初始化和声明

时间:2013-12-16 04:17:38

标签: c++ c++11 coding-style

使用C ++ 11提供了一种初始化和声明变量的新方法。

原始

int c_derived = 0;

C ++ 11

int modern{0};

如果有的话,每种方法的优缺点是什么?为什么要实施新方法?编译器是否做了不同的事情?

2 个答案:

答案 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中引入通用初始化。

现在您可以使用大括号初始化数组,变量,字符串,向量。