int x {}之间有区别吗?和int x = 0;?

时间:2016-03-10 08:47:48

标签: c++ c++11 initialization

我知道int x{};是一种默认初始化,但它与编写int x = 0;完全相同吗?

4 个答案:

答案 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};不会编译并省去麻烦。