本文内容取自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结
析构函数
C++ 的类中可以定义一个特殊的清理函数
- 这个特殊的清理函数叫做析构函数
- 析构函数的 功能与构造函数相反
定义:~ClassName()
- 析构函数没有参数也没有返回值类型声明
- 析构函数在对象销毁时 自动被调用
析构函数的定义准则
当类中自定义了构造函数,并且构造函数中使用了
系统资源(如:内存申请,文件打开,等),
则需要自定义析构函数。
程序实验
#include <stdio.h>
class Test
{
int mi;
public:
Test(int i)
{
mi = i;
printf("Test(): %d\n", mi);
}
~Test()
{
printf("~Test(): %d\n", mi);
}
};
int main()
{
Test t(1);
Test* pt = new Test(2);
delete pt;
return 0;
}
运行结果
实验结果,分配在栈上的对象t1,随着程序的返回会调用析构函数
分配在堆上的对象指针pt,delete后时会调用析构函数
小结
- 析构函数是 对象销毁时进行清理 的特殊函数
- 析构函数在 对象销毁时自动被调用
- 析构函数是对象 释放系统资源的保障