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

C++析构函数

析构函数,即当类被释放时调用的函数

析构函数调用

#include <iostream>
using namespace std;class Person
{
public:Person(){cout << "Person constructor" << endl;}~Person(){cout << "Person destructor" << endl;}
};int main()
{//创建对象调用对象构造函数Person p;return 0;
}
//此处超出作用域 对象被自动销毁 调用析构函数

当一个类不手动定义析构函数时,编译器会生成一个默认析构函数

如果类中有new这样动态分配的资源,需要使用析构函数确保这些资源被释放,以防止内存泄漏。

析构函数特点

  1. 无返回值
  2. 无参数
  3. 不可以重载
  4. 有且只有一个析构函数
  5. 只针对new 不针对 malloc
  6. 最大的作用,释放对象内存空间

在使用malloc 分配对象时,使用free释放,不会调用析构函数。通过 new分配对象时,使用delete释放,会调用析构函数

#include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std;class Person
{
public:Person(){cout << "Person constructor" << endl;}~Person(){cout << "Person destructor" << endl;}
};int main()
{Person* p_p = (Person*)malloc(sizeof(Person));free(p_p);//此时不会调用析构函数,堆空间仍然无法释放Person* p = new Person();delete p;//会调用析构函数return 0;
}

http://www.dtcms.com/a/342047.html

相关文章:

  • Linux下Docker版本升级保姆攻略
  • 结合 Flutter 和 Rust 的跨平台开发方案
  • 微软Auzre云的技术支持运营模式是什么
  • Flutter - UI布局
  • Android APP防止应用被动态调试
  • 大数据毕业设计选题推荐-基于大数据的北京气象站数据可视化分析系统-Hadoop-Spark-数据可视化-BigData
  • 浏览器【详解】页面加载过程(含页面加载时序图,页面加载性能优化方案)
  • 搭建我的世界mc服务器全流程——阿里云游戏攻略
  • 09_测试与性能优化
  • 新型犯罪浪潮下的法律迷局:网络、AI与跨境犯罪解析
  • 惯性导航中的IMU传感器是什么?
  • 第5.2节:awk变量的使用
  • 适配器模式 java demo
  • 电能质量监测装置 分布式光伏安全并网“准入证”
  • AI工作负载“加速跑”,高性能网络如何“护航”?
  • EfficientVMamba代码略讲
  • 档案宝系统功能:权限分级,保障档案安全
  • KingbaseES数据库增删改查操作分享
  • 项目集成 Chrono 时间轴
  • Pytest 插件怎么写:从0开发一个你自己的插件
  • SamOutVXP: 轻量级高效语言模型
  • 用nohup setsid绕过超时断连,稳定反弹Shell
  • Spring 循环依赖:从 “死锁” 到 “破局” 的完整解析
  • 在.NET 8 中使用中介模式优雅处理多版本 API 请求
  • 大数据毕业设计选题推荐-基于大数据的鲍鱼多重生理特征数据可视化分析系统-Spark-Hadoop-Bigdata
  • AUTOSAR自适应平台(AP)中元类(Metaclass)、建模(Modeling) 和 ARXML 这三者的核心关系与区别
  • 阿里云上部署nuxt开发的项目(SSG和SSR混合渲染)
  • Qwen2-阿里云最新发布的通义千问开源大模型
  • AR眼镜在制造业的生产设备智慧运维方案介绍
  • CRMEB私域电商系统后台开发实战:小程序配置全流程解析