繁体   English   中英

解释数组文档(C ++)

[英]Interpreting documentation on arrays (C++)

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

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

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

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

...

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

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

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

默认初始化的效果是:

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

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

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

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

https://docs.microsoft.com/en-us/cpp/cpp/new-operator-cpp?view=vs-2019

新的操作员是参考MSDN。

基本上,在new运算符内部,它包含一个要由malloc分配和初始化的函数。 这是一个与新功能重叠的功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM