是
int i(10);相同于
int i = 10 ;这两种方法有什么不同?
发布于 2014-09-13 19:10:29
引用标准(§8.5/14):
初始化的形式(使用圆括号或=)通常无关紧要,但当初始化器或被初始化的实体具有类类型时,这很重要;请参见下面的内容。
因此,在您的例子中,没有区别(“见下文”指的是复制初始化和直接初始化之间的区别,但由于我们讨论的是int,所以这里对此并不感兴趣)。
发布于 2014-09-13 19:17:37
这两者之间的区别之一是:
/*1*/ int a(10);
/*2*/ int a = 10;第一个不能用作类内成员初始值设定项:
struct A
{
int a(10); // compilation error
};而第二个可以为:
struct A
{
int a = 10;
};以及任何其他地方,其中大括号或相等的初始化器(定义如下)是必需的。
brace-or-equal-initializer:
= initializer-clause
braced-init-list
braced-init-list:
{ initializer-list ,opt }
{ }参考资料:
§9.2类成员
[class.mem]
这意味着也可以使用下面的代码:
struct A
{
int a{10};
};发布于 2014-09-13 19:12:53
这是一样的。
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.https://stackoverflow.com/questions/25822574
复制相似问题