湖北做网站的,微网站建设及微信推广方案,wordpress远程图片本地换,聊城做移动网站服务概念#xff1a;
与构造函数功能相反#xff0c;析构函数不是完成对对象本身的销毁#xff0c;局部对象销毁工作是由 编译器完成的。
而对象在销毁时会自动调用析构函数#xff0c;完成对象中资源的清理工作。
特征#xff1a;
1. 析构函数名是在类名前加上字符 ~ 2. …
概念
与构造函数功能相反析构函数不是完成对对象本身的销毁局部对象销毁工作是由 编译器完成的。
而对象在销毁时会自动调用析构函数完成对象中资源的清理工作。
特征
1. 析构函数名是在类名前加上字符 ~ 2. 无参数无返回值类型。
3. 一个类只能有一个析构函数。若未显式定义系统会自动生成默认的析构函数。
注意析构 函数不能重载
4. 对象生命周期结束时C编译系统系统自动调用析构函数
5.编译器默认生成的析构函数和构造函数一样不会处理内置类型对于自定义类型会去它们的内部调用它们的析构函数
6.如果类中没有申请资源时析构函数可以不写直接使用编译器生成的默认析构函数 析构函数的功能类似于 栈、链表、队列的distroy的功能用来进行内部空间的清理和释放而于这些数据结构的distory 功能不同在有了析构函数栈之后这些数据结构就不需要再写distorty 因为析构函数会在这是变量结束后自动进入清理模式 使用析构函数的对比
使用前 使用后 后进先出 如上图代码所示析构函数会先将后面定义的函数进行释放这就是后进先出
class Date
{
public:Date(int year 1){_year year;}~Date(){cout ~Date()-_year endl;}private:// 基本类型(内置类型)int _year;int _month;int _day;
};void func()
{Date d3(3);static Date d4(4);//静态的
}Date d5(5);static Date d6(6);//静态的// 局部对象后定义先析构 -》 局部的静态 -》全局对象后定义先析构
int main()
{Date d1(1);Date d2(2);func();return 0;
} 局部对象后定义先析构 - 局部的静态 -全局对象后定义先析构