在c ++中初始化变量有多种方法。
int z(3)
与int z=3
相同。
是
int z;
z(3);
与
相同int z;
z=3;
答案 0 :(得分:8)
您可以使用:
int z;
z = 3;
或者只是:
int z = 3;
或者:
int z(3);
或者:
int z = int(3);
答案 1 :(得分:3)
z(3);
本身是无效的语法。唯一有效的方法是,如果你有一个名为z
的函数,你传入整数3.但即使这样也不一定将局部变量z
设置为3。 / p>
int z(3);
将仅在C ++中编译(而不是C)。
int z;
z=3;
是有效的语法,并将z
设置为3。
在这种情况下,int z(3)
和int z; z=3;
都是相同的。
答案 2 :(得分:3)
没有z(3);
正在使用参数z
调用名为3
的函数
如果要使用该语法初始化,则需要在声明
中执行此操作int z(3):
然而,你可以像这样初始化z
int z{3};
这是从C ++ 11开始初始化变量的推荐方法
语法的优点是,当存在缩小转换时它会产生错误,即如果不能保证该值适合目标变量,则会出现编译错误。语法可用于任何对象。
参考:第7项,Scott Meyers的有效现代C ++
答案 3 :(得分:0)
不,第一个选项不正确:最烦恼的解析。编译器认为z
是一个函数。然而,这些基本上完全相同:
int z(3);
int z = 3;
请注意,在这种情况下它们是相同的,但是在对象上,第一个调用匹配的构造函数,而第二个需要重载赋值运算符的重载(=
)