自己做信息网站,网页模板下载在线,linux网站建设技术指南,图片制作在线制作免费大家好#xff0c;我是苏貝#xff0c;本篇博客带大家了解C的析构函数#xff0c;如果你觉得我写的还不错的话#xff0c;可以给我一个赞#x1f44d;吗#xff0c;感谢❤️ 目录 1. 概念2. 特性 1. 概念
通过前面构造函数的学习#xff0c;我们知道一个对象是怎么来的… 大家好我是苏貝本篇博客带大家了解C的析构函数如果你觉得我写的还不错的话可以给我一个赞吗感谢❤️ 目录 1. 概念2. 特性 1. 概念
通过前面构造函数的学习我们知道一个对象是怎么来的那一个对象又是怎么没呢的
析构函数与构造函数功能相反析构函数不是完成对对象本身的销毁局部对象销毁工作是由编译器完成的。而对象在销毁时会自动调用析构函数完成对象中资源的清理工作如我们之前在数据结构实现的顺序表、堆、栈等时写的destroy函数
2. 特性
析构函数是特殊的成员函数其特征如下
析构函数名是在类名前加上字符 ~无参数无返回值类型。一个类只能有一个析构函数。若未显式定义系统会自动生成默认的析构函数。注意析构函数不能重载 因为形参只能是无对象生命周期结束时C编译系统自动调用析构函数。 编译器自动生成的析构函数对内置类型的成员变量不做处理对自定义类型的成员变量调用它的析构函数。 如果类中没有申请资源时析构函数可以不写直接使用编译器生成的默认析构函数比如 Date类有资源申请时一定要写否则会造成资源泄漏比如Stack类。 先定义的对象先调用构造函数后定义的对象先调用析构函数
都是局部对象后定义的先调用析构函数 对象生命周期结束时编译器自动调用析构函数。局部变量栈在main函数结束后生命周期结束。Main函数里的Static修饰的静态变量在静态区等main函数将栈上的空间释放后生命周期结束。 两个静态变量后定义的先调用析构函数 全局变量也在静态区后定义的先调用
析构函数的调用顺序总结 局部对象 - 局部的静态对象 - 全局对象/静态对象 好了那么本篇博客就到此结束了如果你觉得本篇博客对你有些帮助可以给个大大的赞吗感谢看到这里我们下篇博客见❤️