当前位置: 首页 > 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.xdnf.cn/news/1337293.html

相关文章:

  • 训练后数据集后部署PaddleOCR转trt流程
  • 使用C++17标准 手写一个vector
  • [Mysql数据库] Mysql安全知识
  • 12KM无人机高清图传通信模组——打造未来空中通信新高度
  • Docker操作速查表
  • 动态规划----6.单词拆分
  • AI重塑软件测试:质量保障的下一站
  • 【clion】cmake脚本1:调试脚本并构建Fargo项目win32版本
  • Linux: network: arp: arp_accept
  • HTML应用指南:利用POST请求获取全国刘文祥麻辣烫门店位置信息
  • 我从零开始学习C语言(12)- 循环语句 PART1
  • DRF序列化器
  • PyTorch API 7
  • 数据安全事件分级
  • 嵌入式的各个要点总结(不断更新)
  • KubeBlocks for ClickHouse 容器化之路
  • 第三十三天(信号量)
  • GO环境变量中GO111MODULE到底是干啥的?
  • 【NFTurbo】基于Redisson滑动窗口实现验证码发送限流
  • 【运维】githubvercel学习使用
  • nginx-下载功能-状态统计-访问控制
  • Qt 中最经典、最常用的多线程通信场景
  • 安装electron报错的解决方法
  • 【Express零基础入门】 | 构建简易后端服务的核心知识
  • jvm三色标记
  • imx6ull-驱动开发篇30——Linux 非阻塞IO实验
  • 机器学习--数据清洗—(续篇)
  • 算法 ----- 链式
  • 基础笔记8.20
  • 【运维进阶】shell三剑客