析构函数是对象被销毁时,系统最后调用的一个函数,一般用于扫尾工作。
析构函数和构造函数一样,没有的话,系统免费送一个,自己定义的话就如下:
class Node
{
public:
int index;
Node* left;
Node* right;
public:
Node(int i) //构造函数,带一个参数
{
index=i;
left=0;
right=0;
}
~Node() //析构函数
{
if (left)
delete left;
if (right)
delete right;
}
};
析构函数没有返回值,且不带参数,只用在类名的函数名前加一个取反运算符~即可。
一般成员变量里有指针时要写,因为这些指针指的空间一般是用new运算符分配的,不会随着对象的销毁而释放,因为系统只会自己释放那个指针用来存地址的空间,它指的那个空间很可能就孤立了,别人也再也指不过去了,所以要手动释放。