当前位置: 首页 > article >正文

析构函数

析构函数定义

1.名字与类名相同,在前面加’~‘,没有参数和返回值,一个类最多只能有一个析构函数。

2.析构函数对象消亡时即自动被调用。可以定义析构函数在对象消亡前做善后工作,比如释放分配空间等。

如果定义类时没写析构函数,则编译器生成缺省析构函数。缺省析构函数什么也不做;

如果定义了析构函数,则编译器不再生成。

C++规定析构函数的名字是类名的前面加一个波浪号(~)。其定 义形式为:

析构函数的执行

 当对象的生命周期结束的时候,就会自动执行析构函数。如果出现以下几种情况,程序就会执行析构函数:

(1) 如果在一个函数中定义了一个对象,那么,该对象就是局部对象,当这个函数被调用结束时,对象的生命周期结束。此时,对象应该释放(销毁),在对象释放(销毁)前自动执行析构函数。

(2) static 局部对象在函数调用结束时对象并不释放(销毁),因此,不调用析构函数,只在main() 函数结束或调用exit()函数结束程序的时候,才调用static局部对象的析构函数。

因为static局部对象的生命周期是整个程序运行过程,所以,只有程序结束运行的时候,static局部对象的生命周期才结束,才执行类的析构函数。

(3) 如果定义了一个全局对象,全局对象的生命周期是整个程序运行过程,所以,当程序结束运行的时候,全局对象才销毁,此时,调用该全局对象的析构函数。

(4) 如果用new运算符动态地建立了一个对象,当用delete运算符释放该对象时,先调用该对象的析构函数。

构造函数和析构函数的调用次序

在使用构造函数和析构函数时,需要特别注意对它们的调用时间和调用次序。
构造函数和析构函数的调用很像一个栈的先进后出,调用析构函数 的次序正好与调用构造函数的次序相反。最先被调用的构造函数, 其对应的(同一对象中的)析构函数最后被调用,而最后被调用的 构造函数,其对应的析构函数最先被调用。

可简述为:先构造的后析构,后构造的先析构。

https://blog.csdn.net/feng19870412/article/details/117790748


http://www.kler.cn/a/230134.html

相关文章:

  • 【AI系统】Tensor Core 架构演进
  • 手搓人工智能—聚类分析(下)谱系聚类与K-mean聚类
  • Pytorch使用手册-Datasets DataLoaders(专题三)
  • ES 和Kibana-v2 带用户登录验证
  • STM32WB55RG开发(5)----监测STM32WB连接状态
  • 自制Windows系统(十)
  • 计算机设计大赛 深度学习+python+opencv实现动物识别 - 图像识别
  • 部署tomcat
  • 【C#】MVVM架构
  • 前端常用代码整理(不断更新中)— js,jquery篇
  • H5 简约四色新科技风引导页源码
  • 基于java+springboot+vue实现的仓库管理系统(文末源码+Lw)23-115
  • 详解MYSQL中的平均值组大小
  • VScode上无法运行TSC命令,Typescript
  • Redis持久化、主从与哨兵架构详解
  • 3、生成式 AI 如何帮助您改进数据可视化图表
  • 【开源】SpringBoot框架开发城市桥梁道路管理系统
  • modelsim仿真使用到vivado的IP,该如何使用!
  • LeetCode541. 反转字符串 II
  • C++单例模式详解
  • Pandas常用操作记录(更新中)
  • 74HC154D-LED
  • Swift Combine 从入门到精通一
  • Python数据可视化库之mplfinance使用详解
  • android开发中遇到的问题和注意点
  • 陶哲轩如何用 GPT-4 辅助数学研究