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

mr_*_*r_T 16 c++ initialization c++11

我明白这int x{};是一种默认初始化,但它和写作完全一样int x = 0;吗?

son*_*yao 21

在这种情况下结果是相同的.

int x{}; 是一种默认初始化

不完全是.见缺省初始化.

int x{};值初始化(从C++ 11开始),

这是使用空初始化程序构造变量时执行的初始化.

在这种情况下值初始化的效果(即类型和数组类型)都是:

4)否则,对象是零初始化的.

最后,在这种情况下零初始化的影响是:

如果T是标量类型,则对象的初始值是显式转换为T 的整数常量零.

另一方面,int x = 0;复制初始化 ; x用值初始化0.

正如@PaulR所提到的那样,int x{};只有c ++ 11支持这种差异,而int x = 0没有这样的限制.

  • 在C++ 11及更高版本中是否支持`int x {}`不是真的吗?对于那些需要编写可以使用旧C++标准的可移植代码的人来说,可能不喜欢`int x = 0`吗? (4认同)

Bat*_*eba 7

在这种情况下,它们是相同的.int x{}将以x同样的方式初始化static int x; 即为零.也就是说,我发现int x = 0它更清晰,它的好处是它适用于旧的C++标准.


小智 5

有区别: int x=1.888; 将使用 x 作为 1。以后会遇到很多麻烦。所有专业人士都曾在他们或其他人的代码中遇到过。

int x{1.888}; 不会编译并省事。