首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C++之对象的销毁

C++之对象的销毁

作者头像
程序手艺人
发布于 2018-05-18 07:33:07
发布于 2018-05-18 07:33:07
1.4K00
代码可运行
举报
文章被收录于专栏:程序手艺人程序手艺人
运行总次数:0
代码可运行
  • 生活中对象都是被初始化后才上市的
  • 生活中的对象被销毁前会做一些工作

问题1 : C++中如何清理需要销毁的对象?

  • 一般而言,需要销毁的对象都应该做清理
  • 解决方案
    • 为每个类都提供一个public的free函数
    • 对象不再需要时立即调用free函数进行清理 
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Test
{
    int* p;
public:
    Test() { p = new int ;};
    void free() {delete p ;};
};
  • 存在的问题 
    • free只是一个普通的函数, 必须显示的调用
    • 对象销毁前没有做清理, 很可能造成资源泄露

问题2: C++编译器是否能够自动调用某个特殊的函数进行对象的清理?

析构函数

  • C++的类中可以定义一个特殊的清理函数 
    • 这个特殊的清理函数叫做析构函数
    • 析构函数的功能与构造函数相反
  • 定义 : ~ClassName()
    • 析构函数没有参数也没有返回值类型声明
    • 析构函数在对象销毁时自动调用
  • 析构函数的定义准则
    • 当类中自定义了构造函数,并且构造函数中使用了系统资源(如:内存申请,文件打开,等)则需要自动以析构函数.

小结

  • 析构函数是对象销毁时进行清理的特殊函数
  • 析构函数在对象销毁时自动被调用
  • 析构函数是对象释放系统资源的保障
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年03月26日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
c++之对象构造顺序和销毁(析构函数)
这里我们可以看出当程序流执行到相应的构造对象的那条执行语句时,就会调用构造函数(或者拷贝构造函数)。goto语句想必大家不陌生,但是都害怕这玩意,下面我们加入goto语句看看会产生什么现象:
用户6280468
2022/03/21
6830
【C++】Chapter01 类与对象
封装的定义:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。
Skrrapper
2025/03/25
1730
【C++】Chapter01 类与对象
[C++]类与对象中篇
类与对象中篇:: 1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。空类真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成6个默认成员函数。 默认成员函数: 用户没有显示
IT编程爱好者
2023/04/12
5560
[C++]类与对象中篇
【C++ 初阶路】--- 类和对象(下)
通过上文 类和对象(中) 构造函数的学习,我们知道一个对象是怎么来的,那一个对象又是怎么没呢的?
用户11029269
2024/07/01
1400
【C++ 初阶路】--- 类和对象(下)
【C++】C/C++内存管理
栈中数据:d、num1、*num1、char2、*char2、pchar3、p1、p2、p3
s-little-monster
2024/07/20
1590
【C++】C/C++内存管理
【C++类和对象】构造函数与析构函数
这些默认成员函数在没有显式地定义时,默认会自动生成,但也可以显式地定义来覆盖默认的实现。
大耳朵土土垚
2024/04/15
3320
【C++类和对象】构造函数与析构函数
c++之对象的初始化和清理
在生活中我们购买单电子产品通常都会有出厂设置,在某一天我们不用也会删除一些自己的数据信息以保证安全。
西西嘛呦
2020/08/26
5140
【C++】类和对象(一)
C 语言结构体中只能定义变量,在 C++ 中,结构体内不仅可以定义变量,也可以定义函数。 比如:
啊QQQQQ
2024/11/19
1000
【C++】类和对象(一)
C++初阶
在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存 在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化, 以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的,比如后面vestor和list等等的模拟实现。
ljw695
2024/10/18
2630
C++初阶
C++:类与对象(2)
       在我们学习数据结构的时候,我们总是要在使用一个对象前进行初始化,这似乎已经成为了一件无法改变的事情,如以下的Data类
小陈在拼命
2024/02/28
1910
C++:类与对象(2)
【C++篇】类与对象(中篇) 解密C++类的核心:六大默认成员函数详解与避坑指南
大家好呀,我是我想吃余😁!这次我们学习的内容非常非常重要🔑,如果本章内容懵懵懂懂的话,那么将导致你无法写出一个正确的类,更别说写一个C++程序了。因此,今天的内容务必理解透彻。 默认成员函数是C++的门槛,因为其内容较为抽象复杂,导致C++难学的名头流传至今😂。其实并没有这么夸张,根本不必畏惧,学完之后你会感觉:也就那回事! 翻过这座大山,我们将正式踏入C++的旅程🛫 本文共有9000余字(鬼知道我写了多久😪),干货满满。建议读者选择宽裕的时间学习哦🥰
我想吃余
2025/04/06
1250
【C++篇】类与对象(中篇) 解密C++类的核心:六大默认成员函数详解与避坑指南
【C++】————类和对象(中)
如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不写的情 况下,都会自动生成下面6 个默认成员函数
用户11036582
2024/06/28
2640
【C++】————类和对象(中)
C++初阶-类和对象中
5. 如果类中没有显式定义构造函数(我们没有主动写),则C++编译器会自动生成一个无参的默认构造函数,一旦用户显式定义编译器将不再生成
用户9645905
2022/11/30
7140
C++初阶-类和对象中
C++类和对象(中)
空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员 函数。
二肥是只大懒蓝猫
2023/03/30
1.4K0
C++类和对象(中)
【C++初阶】—— 类和对象 (中)
前言:在参透了类的相关知识后,我们来进一步了解类的6个默认成员函数,本篇先让我们了解三个,剩下的将会在下一篇展开
Eternity._
2024/06/14
1330
【C++初阶】—— 类和对象 (中)
【c++】类与对象(中)
在C语言中,当我们想使用结构体时且当结构体成员变量为指针变量(如:顺序表,链表等等)我们需要使用动态内存时,比较正规的方法时建立初始化函数,在函数中实现初始化。如:
薄荷冰
2024/01/22
2630
【c++】类与对象(中)
C++第四弹 -- 类与对象中篇上(构造函数 析构函数 拷贝构造函数)
让我们一起揭开 C++ 对象生命周期管理的神秘面纱,掌握构造函数、析构函数和拷贝构造函数的精髓!
用户11317877
2024/10/16
1820
C++第四弹 -- 类与对象中篇上(构造函数 析构函数 拷贝构造函数)
【C++阅览室】类和对象
C语言是属于面向过程的编程语言,因此当我们要实现我们的需求时得逐步使用函数逐步实现,十分繁琐。
小文要打代码
2024/10/16
1240
C++天使的灵动心跳代码:类和对象(中上)
一个类里面如果什么都没有,就被叫做空类,但是空类里并不是真的什么都没有,而是存在默认构造函数。这个默认构造函数虽然没有做任何具体的初始化操作(因为类中没有成员变量),但它满足了创建对象的基本需求
DARLING Zero two
2024/12/24
1000
C++天使的灵动心跳代码:类和对象(中上)
C++类与对象(二)
如果一个类中什么成员都没有,简称为空类。 但是任何类里编译器都会自动生成六个默认函数,就跟this的隐藏属性相似,当然你也可以自己去定义,编译器就不会自动生成了。 默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。 六个默认函数在类里面也被成为特殊函数成员。
有礼貌的灰绅士
2023/03/28
6000
C++类与对象(二)
相关推荐
c++之对象构造顺序和销毁(析构函数)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档