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