解释数组文档(C ++)

csg*_*guy 2 c++ arrays

根据https://en.cppreference.com/w/cpp/language/default_initialization

“如果T是数组类型,则数组的每个元素都将默认初始化”

我是否误解了,因为我们都知道 http://www.cplusplus.com/doc/tutorial/arrays/

默认情况下,局部范围的常规数组(例如,在函数中声明的常规数组)未初始化。这意味着其元素均未设置为任何特定值。在声明数组时,它们的内容尚未确定。

...

初始化程序甚至可以没有任何值,只需括号即可:这将创建一个包含五个int值的数组,每个int值均初始化为零

第一个来源如何准确?在哪里可以找到更多可信的文档来解决阵列默认初始化的这种现象?

Nik*_* C. 5

您需要阅读整个内容。我给他们编号:

默认初始化的效果是:

  1. 如果T是非POD(直到C ++ 11)类类型,则考虑构造函数,并针对空参数列表对其进行重载解析。调用选定的构造函数(它是默认的构造函数之一)为新对象提供初始值。

  2. 如果T是数组类型,则数组的每个元素都将默认初始化;

  3. 否则,什么也不做:具有自动存储持续时间的对象(及其子对象)被初始化为不确定的值。

这是一个递归语句。数组中的每个元素都是默认初始化的。这意味着取决于元素类型。如果元素类型适用于1.,则为每个元素调用默认构造函数。但是,如果元素类型是int,则3.发生。它具有不确定的值。