gpt4 book ai didi

c++ - 是否定义了静态初始化实现的顺序?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:23:20 26 4
gpt4 key购买 nike

动态初始化可以是有序的也可以是无序的:

Dynamic initialization of a non-local variable with static storage duration is either ordered or unordered.

这并没有说明静态初始化的顺序。静态初始化的顺序是实现定义的吗?

最佳答案

静态初始化意味着“初始化具有静态存储持续时间的变量”。这是一个更为有限的术语,在 §3.6.2 [basic.start.init]/p2 中定义。

Together, zero-initialization and constant initialization are called static initialization; all other initialization is dynamic initialization. Static initialization shall be performed before any dynamic initialization takes place.

Constant initialization 定义在同一段落中,基本上涉及对编译时常量的初始化。

因为静态初始化涉及对编译时常量的初始化,并且保证在任何动态初始化发生之前发生,所以顺序并不重要。 (实际上,对于静态存储持续时间的对象,初始值很可能放在编译后的可执行文件的数据段(零初始化的bss段),并在程序启动时由操作系统直接加载,所以说“顺序“没有多大意义。)任何可能出现“静态初始化失败”的事情实际上都涉及动态初始化。

关于c++ - 是否定义了静态初始化实现的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24531186/

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