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

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

Susan Sarandon
发布: 2024-10-29 03:51:02
原创
308 人浏览过

 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板