是
int i(10);
与
相同int i = 10 ;
这两种方法有什么不同?
答案 0 :(得分:2)
引用标准(§8.5/ 14):
初始化的形式(使用括号或=)通常是 无关紧要,但在初始化程序或实体时确实很重要 被初始化有一个类类型;见下文。
所以在你的情况下,没有区别(“见下文”是指复制初始化和直接初始化之间的区别,但正如我们所说的那样int
,这里不感兴趣)
答案 1 :(得分:1)
这两者之间的区别之一:
/*1*/ int a(10);
/*2*/ int a = 10;
是第一个不能用作类内成员初始值设定项:
struct A
{
int a(10); // compilation error
};
而第二个可以:
struct A
{
int a = 10;
};
以及在任何其他地方, brace-or-equal-initializer (在下面定义)所需的地方。
brace-or-equal-initializer:
= initializer-clause
braced-init-list
braced-init-list:
{ initializer-list ,opt }
{ }
参考:
§9.2类成员
[class.mem]
- 大括号或等号初始化程序只能出现在数据成员的声明中。 (对于静态数据成员,请参见9.4.2;对于非静态数据成员,请参阅12.6.2)。
醇>
这意味着可以替代地使用以下内容:
struct A
{
int a{10};
};
答案 2 :(得分:0)
它是一样的。
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.
答案 3 :(得分:-3)
int i(10);: - 这种减速是一种声明方法的错误方法。声明方法,方法名称和方法内使用的参数列表的返回类型所需的方法。 int i(10)是一种错误的减速方法。
int i = 10: - 表示i是一个具有10个值的int类型变量。两者的含义不同
从我们使用的构造函数初始化变量
class I {
int i;
i(int i) {
this.i=i;
}
psvm(string []m){
I i= new I(10);
}
}