C++对象的销毁之析构函数实例分析
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,本文小编为大家详细介绍"C++对象的销毁之析构函数实例分析",内容详细,步骤清晰,细节处理妥当,希望这篇"C++对象的销毁之析构函数实例分析"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来
千家信息网最后更新 2025年11月08日C++对象的销毁之析构函数实例分析
本文小编为大家详细介绍"C++对象的销毁之析构函数实例分析",内容详细,步骤清晰,细节处理妥当,希望这篇"C++对象的销毁之析构函数实例分析"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
一、对象的销毁
生活中的对象都是被初始化后才上市的
生活中的对象被销毁前会做一些清理工作
—股而言,需要销毁的对象都应该做清理
解决方案
为每个类都提供一个 public 的 free 函数
对象不再需要时立即调用 free 函数进行清理
如下:
存在的问题
free 只是一个普通的函数,必须显示的调用
对象销毁前没有做清理,很可能造成资源泄漏
C++ 编译器是否能够自动调用某个特殊的函数进行对象的清理?
二、析构函数
C++ 的类中可以定义一个特殊的清理函数
这个特殊的清理函数叫做析构函数
析构函数的功能与构造函数相反
定义:~ClassName()
析构函数没有参数也没有返回值类型声明
析构函数在对象销毁时自动被调用
下面开始简单使用析构函数:
#includeclass Test{public: Test() { printf("Test()\n"); } ~Test() { printf("~Test()\n"); }}; int main(){ Test t; return 0;}
输出结果如下:
t 虽然是对象,但是本质上也是局部变量,在 return 0 之前会销毁,t 被销毁时析构函数会被自动调用。
下面再来看一个例子:
#includeclass Test{ int mi;public: Test(int i) { mi = i; printf("Test(): %d\n", mi); } ~Test() { printf("~Test(): %d\n", mi); }}; int main(){ Test t(1); Test* pt = new Test(2); delete pt; return 0;}
输出结果如下:
析构函数的定义准则
当类中自定义了构造函数,并且构造函数中使用了系统资源(如∶内存申请,文件打开,等) ,则需要自定义析构函数。
下面再来看一个实验:
IntArray.h:
#ifndef _INTARRAY_H_#define _INTARRAY_H_ class IntArray{private: int m_length; int* m_pointer;public: IntArray(int len); IntArray(const IntArray& obj); int length(); bool get(int index, int& value); bool set(int index ,int value); ~IntArray();}; #endifIntArray.cpp:
#include "IntArray.h"#include "stdio.h" IntArray::IntArray(int len) { m_pointer = new int[len]; for(int i=0; imain.cpp:
#include #include "IntArray.h" int main(){ IntArray a(5); for(int i=0; i输出结果如下:
可以看到 do it 输出两次,也就是说析构函数被自动调用两次。
读到这里,这篇"C++对象的销毁之析构函数实例分析"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
函数
对象
C++
输出
实例
实例分析
分析
特殊
文章
结果
内容
资源
生活
妥当
普通
也就是
也就是说
例子
内存
准则
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
奉贤区创新软件开发哪家好
开源软件开发公司
软件开发项目汇报ppt
服务器出租公司的
各大行业软件开发
软件开发与软件测试工资待遇
怎样关闭服务器的安全配置
香港主机数据库类型
网络安全 运维 培训
如何利用家用宽带搭建服务器
苹果电话连接到服务器时出现问题
网络安全四格漫画大全
中山网络安全产品
sql链接服务器查询速度很慢
网络安全发 第三十六条
维普数据库的查看同义词功能
服务器ip怎么查电话号
成都项目软件开发
下载服务器安全不
互联网科技的优势
网络安全人才与创新基地
存在时才更新表数据库
企业软件开发排名
win10怎么打开网络安全
宝塔面板数据库怎么备份
网站数据库表设计
db2数据库not in
河南计算机应用软件开发哪家可靠
网络安全小报漂亮图片大全
下载服务器安全不