在其他答案中清理神话:不,清理顺序与堆栈无关.
除了两种情况外,C++标准甚至没有定义堆栈的概念:
这两者都不相关.什么是相关的,虽然是第6.6节:
退出范围(无论多么已完成)时,在该范围内构建的具有自动存储持续时间的对象将按其构造的相反顺序销毁.
从循环中移出一个循环,或者从具有自动存储持续时间的初始化变量返回过去涉及销毁具有自动存储持续时间的对象,这些对象在转移点但不在转移点处的范围内.
大多数架构使用执行堆栈实现此行为的事实是"快乐的巧合",但标准并未强制要求.
另一方面,无论实现是否使用堆栈,都可以保证逆序销毁.