第二十二课 对象的销毁
一、对象的销毁
方案一
-
为每个类都提供一个public的free函数,当对象不在需要时立即调用free函数进行清理
class test{ private: int *p; public: test() { p = new int; } void free() { delete pl }; }
-
缺点
因为需要人工调用,如果忘了调用,会产生内存泄漏
free 只是一个普通的函数,必须显示的调用
方案二
-
析构函数
C++ 的类中的一个特殊清理函数
析构函数的功能与构造函数相反
析构函数的定义:
~classname()
- 析构函数没有参数也没有返回类型声明
- 析构函数在对象销毁时被自动调用
-
定义准则
当类自定义了构造函数,并且构造函数中使用了系统资源(如申请内存、打开文件等),则需要自定义析构函数
二、小结
- 析构函数时对象销毁时进行清理的特殊函数
- 析构函数在对象销毁时自动被调用
- 析构函数时对象释放资源的保障