c++ - 解释有关数组的文档 (C++)
问题描述
根据https://en.cppreference.com/w/cpp/language/default_initialization
“如果 T 是数组类型,则数组的每个元素都是默认初始化的”
我是不是误解了什么,因为我们都知道 http://www.cplusplus.com/doc/tutorial/arrays/
默认情况下,本地范围的常规数组(例如,在函数中声明的数组)未初始化。这意味着它的任何元素都没有设置为任何特定值。它们的内容在声明数组时是不确定的。
...
初始化器甚至可以没有值,只有大括号:这将创建一个包含五个 int 值的数组,每个值都用零值初始化
第一个来源如何准确,我在哪里可以找到更可靠的文档来解决数组默认初始化的这种行为?
解决方案
你需要阅读全文。我给它们编号:
默认初始化的效果是:
如果 T 是非 POD(C++11 之前)类类型,则考虑构造函数并对其进行针对空参数列表的重载决议。调用选择的构造函数(默认构造函数之一)为新对象提供初始值;
如果 T 是数组类型,则数组的每个元素都是默认初始化的;
否则,什么都不做:具有自动存储持续时间的对象(及其子对象)被初始化为不确定的值。
这是一个递归语句。数组中的每个元素都是默认初始化的。这意味着什么取决于元素类型。如果元素类型是 1. 将适用的,则为每个元素调用默认构造函数。但是,如果元素类型是 ,int
那么 3. 就会发生。它留下了一个不确定的价值。
推荐阅读
- javascript - 为什么 JavaScript 不执行?
- c++ - 未从实时 ETW 消费者接收 Microsoft-Windows-Kernel-Process 事件
- scala - sbt 未显示“runMain”的完整输出
- node.js - 反应
ProtectedRoute 问题/无法按预期工作 - java - 正则表达式只允许给定字符类中的一个(可能是重复的)字符
- html - 来自 HTML 文档中嵌入的 typeform 的“unsafe-eval”错误 Google App Engine 托管
- python - 如何格式化我的 y 轴以在 Seaborn 图表中显示逗号分隔符?
- c# - 创建一个新的 .txt 文件,而不是在 C# 中追加
- angular - 使用 Docker 在 nginx 服务器上部署 Angular 应用程序 欢迎使用 nginx
- ios - maxKeyCount 和 addPositiveDiagnosisKeys 如何交互?