繁体   English   中英

临时对象销毁顺序的例外情况?

[英]Exceptions to the order of destruction for temporary objects?

阅读C ++ 0x草案的第1.9 / 14条。 在那里我发现:

在与要评估的下一个全表达式相关联的每个值计算和副作用之前,对与全表达式相关联的每个值计算和副作用进行排序.8)

脚注8说

8)如12.2中所述,在评估完整表达式之后,临时对象的析构函数的零次或多次调用的序列发生, 通常以每个临时对象的构造的相反顺序发生。

“通常”是什么意思? 我认为破坏的相反顺序是规则。

我假设他们指的是任何临时引用的临时工具。 临时的生命周期延长到参考的生命周期,而其他临时工作可能仍然被销毁。

除了Mark B的答案(这是非常好的)还有另外一种情况:如果你创建一个通过前向迭代器访问的类型的临时对象,那么对象(显然就足够了)按照迭代器支持的顺序创建,并且在相同的顺序(不是相反的 - 因为迭代器不支持)。 我不记得是肯定的,但我似乎记得同样的事情发生(或至少是被允许),即使存在问题的容器支持反向迭代(所以有问题的代码可以忽略容器/迭代器类型,大概)。

暂无
暂无

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

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