【发布时间】:2016-12-16 04:31:18
【问题描述】:
invoked 是否意味着析构函数已被调用并完成/返回,或者仅仅是它已被调用?一直以为是后者,直到在12.4 Destructors部分看到这句话(多稿都有这个):
一旦为对象调用析构函数,该对象就不再存在
如果 invoked 仅仅意味着调用已经开始,那就意味着 this 在析构函数的主体中是无效的。
如果 invoked 意味着调用并完成,这意味着一个对象在其析构函数运行时仍然“存在”并且可能从另一个线程(即是什么让我首先看到了标准)。其他答案声称情况并非如此,但不要用消息来源支持它,所以我倾向于认为它们是错误的。
【问题讨论】:
-
that would imply that an object still "exists" while its destructor is running and could be accessed from perhaps another thread.. 这是 dtor .. 资源清理 .. 和std::mutex的要点之一,以确保您不会访问已处置的对象 ..
标签: c++ language-lawyer destructor