对象的销毁

对象被销毁前会做一些清理工作

需要销毁的对象都应该被清理

解决方案:

为每个类都提供一个public的free函数

对象不在需要时立即调用free函数进行清理

存在的问题

free只是一个普通的函数,必须显示的调用

对象销毁前没有做清理,很可能造成资源泄露

析构函数

C++的类中可以定义一个特殊的清理函数

这个特殊的清理函数叫做析构函数
析构函数的功能与构造函数相反

定义:~ClassName()

析构函数没有参数也没有返回值类型声明
析构函数在对象销毁时,自动被调用。

#include"stdio.h"
class Test
{
private:
 int mi;
    public:
    Test(int i)
    {
    mi = i;
        printf("Test()\n");
    }
    ~Test()
    {
        printf("~Test()\n");
    }
};
int main()
{
    Test t(1);
    Test* pt = new Test(2);
     delete pt;
    return 0;
}

输出:
`Test()
Test()
~Test()
~Test()`

析构函数的定义准则

当类中定义了构造函数,并且构造函数中使用了系统资源,则需要定义析构函数。

小结:

析构函数是对象销毁时进行清理的特殊函数

析构函数在对象销毁时自动被调用

析构函数的对象释放资源的保障


YingLi
6 声望5 粉丝

From zero to hero.