首页 > 解决方案 > 解释有关数组的文档 (C++)

问题描述

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

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

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

默认情况下,本地范围的常规数组(例如,在函数中声明的数组)未初始化。这意味着它的任何元素都没有设置为任何特定值。它们的内容在声明数组时是不确定的。

...

初始化器甚至可以没有值,只有大括号:这将创建一个包含五个 int 值的数组,每个值都用零值初始化

第一个来源如何准确,我在哪里可以找到更可靠的文档来解决数组默认初始化的这种行为?

标签: c++arrays

解决方案


你需要阅读全文。我给它们编号:

默认初始化的效果是:

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

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

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

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


推荐阅读