我知道int x{};
是一种默认初始化,但它与编写int x = 0;
完全相同吗?
答案 0 :(得分:20)
在这种情况下结果相同。
int x{};
是一种默认初始化
不完全是。请参阅default initialization。
int x{};
是value initialization(自C ++ 11起),
这是使用空初始化程序构造变量时执行的初始化。
在这种情况下,值初始化的效果(即类型和数组类型都不是):
4)否则,对象零初始化。
最后zero initialization在这种情况下的效果是:
如果T是标量类型,则对象的初始值为积分 常数零明确转换为T.
另一方面,int x = 0;
是copy initialization; x
初始化为0
。
正如@PaulR所提到的,不同之处在于int x{};
仅支持c ++ 11,而int x = 0
没有这样的限制。
答案 1 :(得分:7)
在这种情况下,它们是相同的。 int x{}
会以与x
相同的方式初始化static int x
;即为零。也就是说,我发现int x = 0
更清晰,它的好处是它适用于旧的C ++标准。
答案 2 :(得分:3)
它们都是完全相同的东西。它们都将初始化为0
。
#include <iostream>
#include <string>
using namespace std;
int main()
{
int y{};
int x = 0;
cout << "y: " << y << endl;
cout << "x: " << x << endl;
return 0;
}
<强>输出:强>
y: 0
x: 0
答案 3 :(得分:2)
有区别: int x = 1.888;将与x一起工作1.以后很麻烦。所有专业人士都会在他们或他人的某些时候面对。代码。
但 int x {1.888};不会编译并省去麻烦。