析构函数
1. 概念
前面通过构造函数的学习,我们知道一个对象时怎么来的,那一个对象又是怎么没呢的?
- 析构函数:与构造函数功能相反,析构函数不是完成对象的销毁,局部对象销毁工作是由编译器完成的。而对象在销毁时会自动调用析构函数,完成类的一些资源清理工作。
2. 特性
析构函数是特殊的成员函数。帮助我们清理资源(不是销毁对象), 资源包括堆上的资源, 打开的文件, 网络连接
- 如果对象是一个局部变量, 编译器会帮我们自动销毁
- 编译器自动调用(在对象的生命周期结束时, 编译器自动调用析构函数 完成对资源的清理
- 函数名: ~类名(){} , 无参无返回值, 不能重载
- 如果不定义, 编译器也会帮我们自动生成
- 构造顺序是按照语句的顺序进行构造,析构是按照构造的相反顺序进行析构
class Date
{
public:
// 全缺省的默认构造
Date(int year = 1, int month = 1, int day = 1){
// Date(int year, int month, int day){
this->_year = year