首页 >后端开发 >C++ >什么时候可以在 C 中显式调用析构函数?

什么时候可以在 C 中显式调用析构函数?

Susan Sarandon
Susan Sarandon原创
2024-10-29 03:51:02340浏览

 When is it Okay to Explicitly Call a Destructor in C  ?

显式析构函数调用:何时以及为何

一般来说,在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn