析构函数

news/2024/11/14 22:56:55/文章来源:https://www.cnblogs.com/xuzhenxuexi/p/18547017

与构造函数相对应,构造函数是对象创建的时候自动调用的,而析构函数就是对象在销毁的时候自动调用的。与构造函数作用刚好相反,构造函数是用来初始化成员变量,析构函数是用来释放对象占用的资源。
A(const int data) { cout << "A的构造函数" << endl; m_data = new int(data); *m_data = data; } ~ A() { cout << "A的析构函数" << endl; delete m_data; m_data = NULL; } private: int *m_data;

  • 函数名必须是"~类名",没有返回类型,也没有参数,也无法重载

  • 当对象销毁时,该类的析构函数会自动的被执行(不建议手动调用析构)

    • 栈对象:当离开作用域时,其析构函数被自动调用
    • 堆对象:堆对象的析构函数被delete操作符调用
      int main() { //A a;//堆对象 A* a = new A(); cout << "delete之前" << std::endl; delete a;//堆区申请内容编译器不会帮我们释放,堆区对象也不会调用其析构函数,需要手动调用, delete操作符会调用析构函数 cout << "delete之后" << std::endl; return 0; }
  • 如果一个类没有显式定义析构函数,那么系统会为该类提供一个缺省的析构函数:

    • 对于基本类型的成员变量,什么也不做
    • 对于类类型的成员变量,调用相应类的析构
      对象创建和销毁的过程
      1)创建
      -->分配内存
      -->构造成员子对象(按声明顺序)
      -->执行构造函数代码
      2)销毁
      -->执行析构函数代码
      --* >析构成员子对象(按声明逆序)
      -->释放内存

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/833686.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot配置多数据源实战

SpringBoot配置多数据源实战@目录SpringBoot配置多数据源实战需求来源:简单粗暴3步使用步骤:思路讲解:目录结构:使用注意点: SpringBoot配置多数据源实战 需求来源: 当相关业务场景想实现同时操作2个甚至多个不同数据库表的时候,就需要配置多个数据源。简单粗暴3步使用步…

HTTP 协议学习笔记

HTTP 协议学习笔记 带新手走进神秘的HTTP协议 - 超超boy - 博客园 HTTP 首部字段详细介绍 - 超超boy - 博客园 《白帽子讲 web 安全(第二版)》HTTP 默认的端口号为 80,HTTPS 的端口号为 443。HTTP 是无状态协议,它不对之前发生过的请求和响应的状态进行管理。 可以使用 Coo…

自主研发RPA,基于uiautomatorviewer的自动化代码生成器,一键生成Java代码和Cucumber描述文件

介绍 基于UI Automator进行二次开发,让你不懂开发也能编写自动化测试代码, 一边生成代码一边Debug,毫不费力写出完美的自动化测试代码 。该工具集成了Tomcat使得添加新的功能的时候使用HTML+API进行开发,降低了开发难度;集成了Derby数据库,测试用例持久化到数据库。 软件…

关于NVIDIA Jetson AGX Xavier刷机过程记录

刷机记录,再刷机忘记了回来看看~主机电脑安装ubuntu20.04虚拟机,NVIDIA sdkmanager,主机端连上路由器提供的wifi。再将Jetson接上电源,但不开机。拿出附带的typec——USB数据线,typec端连上图中的typec口,USB连上主机电脑。找出一根网线,一端连接Jetson,另一端连接步骤…

shell编程 - 基础篇

1. Shell简介Shell是一个C语言编写的脚本语言,它是用户与Linux的桥梁,用户输入命令交给Shell处理,Shell将相应的操作传递给内核(Kernel),内核把处理的结果输出给用户。2. Shell编程语言必知必会shell命令解释器:bash编程常用命令解释器.命令解释器bash 目前应用最广泛一…

第四届光学与机器视觉国际学术会议(ICOMV 2025) 2025 4th International Conference on Optics and Machine Vision

第四届光学与机器视觉国际学术会议(ICOMV 2025)2025 4th International Conference on Optics and Machine Vision重要信息官网:https://ais.cn/u/vEbMBz

【os】操作系统是怎样一步步接收键盘按键的?

你有没有想过,按下键盘按键后,相应的字符是怎么一步步显示在屏幕上的? 首先来看硬件部分,你至少应该能想到必须得有键盘和CPU:之后呢,cpu是怎么知道有键盘按下呢? 为了让键盘按下按键后能通知到CPU,需要借助键盘控制器,keyboard controller,这当然也是硬件:当按下按…

Kafka学习day01

Kafka的学习day01-Kafka基础环境的搭建Kafka Centos7环境搭建 1. 安装Zookeeper 1.1 官网下载安装包ZooKeeper官网下载地址1.2 使用Xftp或远程工具将ZooKeeper安装包上传文件到服务器或虚拟机1.3 编写配置文件 进入ZooKeeper安装目录 cd {安装目录}/conf/1.3.1 配置文件模版 # …

从数据到知识,知识中台赋能企业智能化升级

在信息爆炸的时代,企业面临着数据泛滥与知识匮乏的双重挑战。如何将海量的数据转化为有价值的知识,进而驱动企业的智能化升级,已成为企业竞争力的关键。知识中台作为企业数字化转型的核心,正逐渐成为企业智能化升级的新引擎。 一、数据与知识的转化 数据本身并不等同于知识…

基于Java+SpringBoot+Mysql在线课程学习教育系统功能设计与实现十

审核前台用户认证信息、查看所有用户、订单、发布文章、发布常见问题等。 该系统总共24张表,代码整洁,每个功能、接口上都有注释说明。 运行环境:jdk1.8、mysql5.x、eclipse/idea、maven3.5/3.6 包远程运行的哦。 特色功能:发布课程、学习课程、分享资料、资料讨论等。 部分…

基于Java+SpringBoot+Mysql在线课程学习教育系统功能设计与实现九

该系统总共24张表,代码整洁,每个功能、接口上都有注释说明。 运行环境:jdk1.8、mysql5.x、eclipse/idea、maven3.5/3.6 包远程运行的哦。 特色功能:发布课程、学习课程、分享资料、资料讨论等。 部分功能:前台课程评论信息控制器Controller、优惠卷信息控制器Controller、…

SharePoint Online页面的一些奇怪参数

前言最近,在查找资料的时候,偶然间发现了一些非常有意思的参数,如下:?env=Embedded or ?env=WebView&wdStartOn=21.正经的SharePoint Online页面2.加了参数的SharePoint Online 页面3.加了另一个参数的SharePoint Online页面结束语相信大家看效果就已经发现了,参数是…