首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基本数据类型的构造函数

基本数据类型的构造函数
EN

Stack Overflow用户
提问于 2014-09-13 19:05:12
回答 4查看 619关注 0票数 4

代码语言:javascript
复制
int i(10);

相同于

代码语言:javascript
复制
int i = 10 ;

这两种方法有什么不同?

EN

回答 4

Stack Overflow用户

发布于 2014-09-13 19:10:29

引用标准(§8.5/14):

初始化的形式(使用圆括号或=)通常无关紧要,但当初始化器或被初始化的实体具有类类型时,这很重要;请参见下面的内容。

因此,在您的例子中,没有区别(“见下文”指的是复制初始化和直接初始化之间的区别,但由于我们讨论的是int,所以这里对此并不感兴趣)。

票数 2
EN

Stack Overflow用户

发布于 2014-09-13 19:17:37

这两者之间的区别之一是:

代码语言:javascript
复制
/*1*/ int a(10);
/*2*/ int a = 10;

第一个不能用作类内成员初始值设定项:

代码语言:javascript
复制
struct A
{
    int a(10); // compilation error
};

而第二个可以为:

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

以及任何其他地方,其中大括号或相等的初始化器(定义如下)是必需的。

代码语言:javascript
复制
brace-or-equal-initializer:
    = initializer-clause
    braced-init-list

braced-init-list:
    { initializer-list ,opt }
    { }

参考资料:

§9.2类成员[class.mem]

  1. 括号或相等初始值设定项只能出现在数据成员的声明中。(静态数据成员见9.4.2,非静态数据成员见12.6.2)。

这意味着也可以使用下面的代码:

代码语言:javascript
复制
struct A
{
    int a{10};
};
票数 1
EN

Stack Overflow用户

发布于 2014-09-13 19:12:53

这是一样的。

代码语言:javascript
复制
int i = 10 // initializes memory  and loads with value 10.

int i(10) // does the same just writing style is different.It is like initializing a class of int.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25822574

复制
相关文章

相似问题

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