C++对象的销毁之析构函数实例分析
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,本文小编为大家详细介绍"C++对象的销毁之析构函数实例分析",内容详细,步骤清晰,细节处理妥当,希望这篇"C++对象的销毁之析构函数实例分析"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来
千家信息网最后更新 2025年01月20日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();}; #endif
IntArray.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安全错误
数据库的锁怎样保障安全
学术论文数据库是什么意思
惠普服务器功率
全国三级网络技术免费题库
数据库技术与大数据应用作业
在创立数据库
学校做网络安全教育
兴平app软件开发制作
小白测评数据库续航排名2022
新乡市技术学院软件开发
广州邦隽软件开发公司
radius服务器设置
前端页面访问数据库的过程
济南服务器回收免费咨询
c 绑定数据库某个字段
朱庇特兽数据库
政府网络安全应急预案范文
戴尔模块化服务器
数据库中删除两行语句代码
软件开发培训四个月之后
软件开发调试的含义
云思网络技术官方账号
计算机软件开发条件
震地者是单边服务器
高清仓库管理erp软件开发
管理员服务器号
工信部网络安全局杨宇燕
高州定制软件开发
云服务器企业认证
兆物网络技术有限公司保安
dns服务器有哪些安全