繁体   English   中英

这是什么 - > ~T()呢?

[英]What does this -> ~T() do?

任何人都可以解释这段代码提取的作用吗? 我的第一个猜测是d()调用自己的析构函数,但后来我想知道为什么你不能自己调用T的析构函数。

class T
{
    void d()
    {
        this -> ~T();
    }
}

先感谢您。

明确要求析构函数Tthis T的析构函数的名称是~T .

通常这不是必需的,因为C ++在超出范围或delete对象时负责调用对象的析构函数。 如果没有更多的上下文,很难说出你的代码中发生了什么以及为什么作者认为这是必要的。

你是对的。

d()调用析构函数,也可以直接调用析构函数。

请记住,这不会delete调用那样恢复内存

我应该在局部变量上显式调用析构函数吗?

没有!

析构函数将在创建本地的块的close}处再次被调用。 这是语言的保证; 它自动发生; 没有办法阻止它发生。 但是你可以通过第二次在同一个对象上调用析构函数来获得非常糟糕的结果! 砰! 你死定了!

更多细节 - http://www.parashift.com/c++-faq-lite/dtors.html#faq-11.1

看起来它调用了当前类的析构函数......这样做很奇怪,基本上如果正确编写了析构函数,它会“重置”对象......但通常你也必须重新实例化成员变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM