首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++11变量初始化与声明

C++11变量初始化与声明
EN

Stack Overflow用户
提问于 2013-12-16 04:17:38
回答 2查看 1.3K关注 0票数 3

C++11带来了一种初始化和声明变量的新方法。

原创

代码语言:javascript
复制
int c_derived = 0;

C++11

代码语言:javascript
复制
int modern{0};

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-16 04:32:03

您错了-- int modern(0)表单(带圆括号)在C++的旧版本中可用,并在C++11中继续可用。

在C++11中,新表单使用了花括号来提供统一的初始化,所以您可以这样说

代码语言:javascript
复制
int modern{0};

这种新形式的主要优点是它可以在任何地方持续使用。它清楚地表明,您正在初始化一个新对象,而不是调用一个函数,或者更糟的是调用declaring one

它还提供了与表单的C样式(“聚合”)结构初始化的语法一致性。

代码语言:javascript
复制
struct A
{
    int a; int b;
};

A a = { 1, 2 };

在使用花括号窗体时,对于缩小数值类型的转换也有更严格的规则。

票数 8
EN

Stack Overflow用户

发布于 2013-12-16 04:29:02

使用大括号只是试图在C++11中引入通用初始化。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20603403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档