任何人都可以解释这段代码提取的作用吗?我的第一个猜测是d()
调用了自己的析构函数,但后来我想知道为什么你不能自己调用T
的析构函数。
class T
{
void d()
{
this -> ~T();
}
}
提前谢谢。
答案 0 :(得分:9)
显式在T
上调用this
的析构函数。 T
的析构函数名称为~T
。
通常这不是必需的,因为当C +超出范围或者delete
时,C ++负责调用对象的析构函数。如果没有更多的上下文,很难说出你的代码中发生了什么以及为什么作者认为这是必要的。
答案 1 :(得分:2)
你是对的。
d()
正在调用析构函数,也可以直接调用析构函数。
请注意,这不会恢复内存,因为delete
会调用。
答案 2 :(得分:1)
我应该在局部变量上显式调用析构函数吗?
没有!
析构函数将在创建本地的块的close}处再次被调用。这是语言的保证;它自动发生;没有办法阻止它发生。但是你可以通过第二次在同一个对象上调用析构函数来获得非常糟糕的结果!砰!你死了!
更多详情 - http://www.parashift.com/c++-faq-lite/dtors.html#faq-11.1
答案 3 :(得分:-1)
看起来它调用了当前类的析构函数...这样做很奇怪,基本上如果正确编写了析构函数,它会“重置”对象...但通常你必须重新实例化成员变量也是如此。