gpt4 book ai didi

c++ - 了解 C++ 中的初始化顺序

转载 作者:太空狗 更新时间:2023-10-29 20:37:11 25 4
gpt4 key购买 nike

cppreference.com 是否是官方页面,就那里提供的文档而言,人们可以依赖它?还是我应该简单地阅读语言文档以防万一我需要 100% 的确定性?

this文章。先列举几种变量初始化的方法:

根据上下文,初始化器可以调用以下之一:

  • 值初始化
  • 直接初始化
  • 复制初始化
  • 列表初始化
  • 聚合初始化
  • 引用初始化

如果没有提供初始化器,则 default initialization的规则申请。

下一部分解释了非局部变量初始化的两个阶段:静态和动态。 Zero initialization发生在静态阶段。当 default initialization 时它什么也没说虽然发生了。

当您转到 default initialization 的描述时,有一个例子说:

int n; // static non-class, a two-phase initialization is done:
// 1) zero initialization initializes n to zero
// 2) default initialization does nothing, leaving n being zero

基于此,我假设默认初始化发生在零初始化之后的某个时间(零初始化处于静态初始化阶段)。但这是唯一真正有人提到默认初始化相对于其他初始化发生的地方。

是 cppreference 不完整,还是信息已经存在但我找不到?

最佳答案

cppreference 不是“官方的”;这是一个维基百科。任何人都可以编辑。它通常被认为具有相当高的质量,但您应该始终将标准视为规范的、权威的信息来源。

至于初始化,您的解释是正确的:首先发生零初始化,然后需要任何其他类型的初始化(无论是默认初始化还是其他)。

这是我能看到的对引用文本的唯一解释,所以我看不出文章的哪一部分是“不完整的”。

关于c++ - 了解 C++ 中的初始化顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35721031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com