根据https://en.cppreference.com/w/cpp/language/default_initialization
“如果T是数组类型,则数组的每个元素都将默认初始化”
我是否误解了,因为我们都知道 http://www.cplusplus.com/doc/tutorial/arrays/
默认情况下,局部范围的常规数组(例如,在函数中声明的常规数组)未初始化。这意味着其元素均未设置为任何特定值。在声明数组时,它们的内容尚未确定。
...
初始化程序甚至可以没有任何值,只需括号即可:这将创建一个包含五个int值的数组,每个int值均初始化为零
第一个来源如何准确?在哪里可以找到更多可信的文档来解决阵列默认初始化的这种现象?
您需要阅读整个内容。我给他们编号:
默认初始化的效果是:
如果T是非POD(直到C ++ 11)类类型,则考虑构造函数,并针对空参数列表对其进行重载解析。调用选定的构造函数(它是默认的构造函数之一)为新对象提供初始值。
如果T是数组类型,则数组的每个元素都将默认初始化;
否则,什么也不做:具有自动存储持续时间的对象(及其子对象)被初始化为不确定的值。
这是一个递归语句。数组中的每个元素都是默认初始化的。这意味着取决于元素类型。如果元素类型适用于1.,则为每个元素调用默认构造函数。但是,如果元素类型是int,则3.发生。它具有不确定的值。