首页 > 其他分享 >析构函数

析构函数

时间:2024-11-14 22:45:48浏览次数:1  
标签:调用 函数 -- 对象 析构 构造函数

与构造函数相对应,构造函数是对象创建的时候自动调用的,而析构函数就是对象在销毁的时候自动调用的。与构造函数作用刚好相反,构造函数是用来初始化成员变量,析构函数是用来释放对象占用的资源。
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)销毁
      -->执行析构函数代码
      --* >析构成员子对象(按声明逆序)
      -->释放内存

标签:调用,函数,--,对象,析构,构造函数
From: https://www.cnblogs.com/xuzhenxuexi/p/18547017

相关文章

  • 构造函数C++
    1.构造函数的介绍功能:专门用于对象的初始化工作,在类的对象创建时定义初始状态特点构造函数的名字和类名是相同的构造函数是没有返回值类型的,也不能写void。可以有形参(也可以重载)在创建对象的时候,会自动调用。而且是一定会调用,但是只会调用一次,不能通过已有......
  • C语言:数组(一维数组,二维数组,数组越界,数组作为函数参量,冒泡排序)
    1、一维数组的创建和初始化1.1、数组的创建数组是相同类型元素的集合•数组中可以存放1个或者多个数据•数组中存放的数据,类型是相同的数组的创建方式:元素类型自定义数组名(常量表达式)比如:intarr[10]doublearr[5]chararr[8+5]错误写法:intarr[n];......
  • C语言中的函数(大白话理解,超详细)
    1、函数是什么?函数就是一种工具,你需要的时候就可以调用他,简化写代码的工作量每个C语言程序至少有一个函数,即主函数main()2、C语言中函数的分类2.1、库函数库函数:是预先编写好的、可供程序员直接使用的函数注意:1、使用库函数必须包括#include对应的头文件(就是""或<>里......
  • C++函数的返回值在内存中的传递过程及什么是虚拟内存,为什么要使用虚拟内存,虚拟内存可
    1) C++函数的返回值在内存中的传递过程在C++中,函数返回值在内存中的传递过程如下:基本数据类型返回值传递当函数返回基本数据类型(如`int`、`double`、`char`等)时,函数会将返回值存储在一个临时的寄存器中。然后,调用函数的地方会从这个寄存器中获取返回值,并将其存储到相应......
  • 【Transformer】损失函数-交叉熵损失
    目录1.交叉熵损失的定义:2.输入:模型的输出分布和真实标签详细解释输入3.输出:损失值4.详细的步骤5.举例说明总结在《AttentionIsAllYouNeed》论文中的Transformer模型主要用于机器翻译任务。对于这样的序列生成任务(如翻译、文本生成等),模型的损失函数通常是交......
  • 激活函数
    一、正向传播和反向传播在模型训练过程中,是同时包含正向传播和反向传播的正向传播是模型根据输入数据和当前的参数(权重和偏置)计算预测输出的过程。例如,在一个图像分类神经网络模型中,输入是图像的像素数据,经过多个隐藏层的计算,最终在输出层得到预测的类别概率分布。反......
  • Rust ?(Rust错误传播运算符?)(用于简化错误处理,自动将错误从函数中返回)(可恢复错误Result<T
    文章目录Rust错误传播运算符:深入理解与应用1.错误处理的基础1.1`Result`枚举1.2`Option`枚举2.错误传播运算符(`?`)2.1基本语法2.2工作原理1.检查返回值2.提取`Ok`值2.3错误传播示例3.错误传播与自定义错误类型(没仔细看)3.1定义自定义错误类型3.2自定义......
  • 关于变量的声明和定义、内部函数和外部函数
    关于变量的声明和定义一个函数一般由两部分组成:声明部分和执行语句。声明部分的作用:是对有关的标识符(如变量、函数、结构体、共用体等)的属性进行声明。对于函数而言,声明和定义的区别是明显的,函数的声明是函数的原型,而函数的定义是对函数功能的定义。对被调用函数的声明是放在主调......
  • vite将工具函数js打包为npm包并发布
    创建vite项目,将vue依赖清除(因为是纯函数js)npmcreatevitepackage.json中vue的依赖都删掉,把src、public等目录都删掉;package.json文件如下{ "name":"tool",//npm包名 "private":false, "version":"0.0.0", "type":"modul......
  • vue3 h函数应用,el-table-v2定义column
    一、引入import{h}from'vue'二、column属性cellRenderer使用h函数h函数中嵌套Element组件Popconfirm{title:'注释',width:165,flexGrow:1,key:"str",dataKey:"str",cellRenderer:({rowData}:any)=>{......