我首先要说的是,使用智能指针,你永远不必担心这一点.
以下代码有什么问题?
Foo * p = new Foo;
// (use p)
delete p;
p = NULL;
Run Code Online (Sandbox Code Playgroud)
这是由另一个问题的回答和评论引发的.Neil Butterworth的一条评论产生了一些赞成:
在删除后将指针设置为NULL不是C++中的通用优良做法.有时候它是一件好事,有时它是毫无意义的,可以隐藏错误.
有很多情况下它无济于事.但根据我的经验,它不会伤害.有人开导我.
我试图在Turbo C++中显式调用类的析构函数:
A a;
a.~A();
Run Code Online (Sandbox Code Playgroud)
但它显示错误:
预期成员标识符.
有没有办法在Turbo C++中显式调用析构函数?
在显式调用析构函数时,它会执行两次.这是什么原因?
#include <iostream>
using namespace std;
class A
{
public:
int x;
A() { cout << "A's constructor called " << endl; }
~A(){
cout<<"A's desctructor called "<<endl;
}
};
int main()
{
A a;
A b;
a.~A();
}
Run Code Online (Sandbox Code Playgroud)
输出:
称为A的构造
A的desctructor称为
叫A的desctructor