gpt4 book ai didi

c++ - 执行数组动态初始化时的操作顺序

转载 作者:可可西里 更新时间:2023-11-01 18:36:15 25 4
gpt4 key购买 nike

我浏览了 dcl.init.aggr 部分,找不到明确的答案。

考虑:

static int x[2] = { f(), g() };

标准是否说明先初始化哪个:x[0] 或 x[1]?

换句话说,哪个函数先运行:f() 还是 g()?

最佳答案

以下是回答您问题的标准的一些相关摘录:

8.5.1/2 “当聚合由初始化列表初始化时,如 8.5.4 中所指定,初始化列表的元素被视为聚合成员的初始化,以递增的下标或成员顺序。 "

8.5.4/4 “在花括号初始化列表的初始化列表中,初始化子句,包括任何由包扩展 (14.5.3) 产生的结果,按照它们出现的顺序进行评估。也就是说,在初始化列表的逗号分隔列表中,与给定初始化器子句关联的每个值计算和副作用都在与它后面的任何初始化器子句关联的每个值计算和副作用之前排序。[注意:无论初始化的语义如何,此评估顺序都适用;例如,当初始化列表的元素被解释为构造函数调用的参数时,它适用,即使通常对调用的参数没有顺序约束。 ——尾注]

关于c++ - 执行数组动态初始化时的操作顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8016986/

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