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

析构函数的定义 合成析构函数

一、析构函数

析构函数:当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统会自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一段内存空间,则在该对象消亡前应在析构函数中用delete释放这段存储空间)。

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

~类名()

{

函数体

}

析构函数不返回任何值,没有返回类型,也没有函数参数。由于没有函数参数,因此它不能被重载。换言之,一个类可以有多个构造函数,但是只能有一个析构函数。

何时调用析构函数:

(1)对象在程序运行超出其作用域时自动撤销,撤销时自动调用该对象的析构函数。如函数中的非静态局部对象。

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

二、合成析构函数

与复制构造函数不同,编译器总是会为类生成一个析构函数,称为合成析构函数(synthesized destructor)。

合成析构函数按对象创建时的逆序撤销每个非静态成员,即它是按成员在类中声明次序的逆序撤销成员的。对于类类型的每个成员,合成析构函数调用该成员的析构函数来撤销对象。

需要注意,合成析构函数并不删除指针成员所指向的对象,它需要程序员显式编写析构函数去处理。

http://www.xdnf.cn/news/11485.html

相关文章:

  • Android和Ios的crash reporter(崩溃报告采集与上传)
  • 跳动爱心代码-李峋同款爱心代码1(完整代码)
  • Metalink使用
  • idou老师带你认识Istio13:Istio实现基础认证策略
  • simulink中积分环节、惯性环节、比例环节
  • null 与 not null
  • 软件工程知识——软件配置管理
  • 远程桌面连接命令和一些常用的cmd命令
  • location对象
  • GCC安装入门教程(非常详细)从零基础入门到精通,看完这一篇就够了
  • 深入C#学习系列一:序列化(Serialize)、反序列化(Deserialize)
  • 6 种常见的线程池、线程池的线程数设计、线程池的拒绝策略、七种参数、线程池队列(默认队列)
  • 安卓开发Java版——UI界面的设计
  • 使用Serv-U搭建FTP服务器并公网访问
  • Office批量打印助手绿色版 Excel批量打印 Word 批量打印软件-供大家学习研究参考
  • 全面解析布局(Grid Canvas StackPanel Wrappanel
  • Spring cloud的Maven插件(一):repackage目标
  • 创建Oracle数据库
  • mysql drivermanager.getconnection_Java DriverManager.getConnection()方法:获取数据库连接
  • 破解软件下载网站100个
  • 深入了解与全面解析华为认证(HCIA/HCIP/HCIE)
  • SQL语句---select基本查询语句
  • CL.exe
  • taskmgr.exe文件丢失导致程序无法运行问题
  • 什么是匹配滤波器?如何理解匹配滤波器?
  • RadioGroup和RadioButton,单选框(Android)
  • 黑客必备的10款黑客武器(黑客工具合集)
  • 4438的代码分析一
  • 最完整的国内手机号段
  • 如何理解FFT中时间窗与RBW的关系