显式析构函数调用:何时以及为何
一般来说,在 C 中不建议显式析构函数调用。然而,也存在例外,如 C 11 标准第 13.4.5 节中所示:
<code class="cpp">template<class T> struct A { ~A(); }; void f(A<int>* p, A<int>* q) { p->A<int>::~A(); // OK: destructor call q->A<int>::~A<int>(); // OK: destructor call }</code>
在此示例中,显式析构函数调用是允许的,因为所讨论的对象是使用放置 new 创建的。要销毁此类对象,您必须显式调用它们的析构函数。
除了放置删除之外,几乎没有什么合理的理由显式调用析构函数。一种可能性是手动销毁一个普通可破坏的对象,尽管这不是特别有用。
附加说明
避免显式析构函数调用的规则的常见例外属于局部变量。然而,这是不准确的;你不应该在局部变量上显式调用析构函数。
以上是什么时候可以在 C 中显式调用析构函数?的详细内容。更多信息请关注PHP中文网其他相关文章!