是否可以保证销毁C ++堆栈变量的顺序

时间:2010-11-12 14:27:17

标签: c++

请考虑以下代码:

{
  std::auto_ptr<Something> p1(pSomePointer);
  std::auto_ptr<Something> p2(pSomeOtherPointer);
  ...
}

是否有保证在退出示波器时p1析构函数在p1之前被调用?常识说堆栈变量应首先从堆栈顶部销毁,但C ++编译器可以重新排序分配。

1 个答案:

答案 0 :(得分:11)

是的,它们按照与施工顺序相反的方式被销毁 - 最后构建的对象将首先被销毁。 C ++保证了这一点。