c++中的析构函数

c++中的析构函数印象中 c 的析构函数是会自动调用 但是今天运行程序的时候 却没有进入到我写的析构函数 让我不禁怀疑 最终到底析构了没有 还是暗自调用了系统的析构 所以来记载一下析构的知识 以下属转载 原文博客地址 https www cnblogs com puyangsky p 5319470 html 一 定义 1 作用 对象消亡时 自动被调用 用来释放对象占用的空间 2 特点 1

印象中c++的析构函数是会自动调用。但是今天运行程序的时候,却没有进入到我写的析构函数,让我不禁怀疑,最终到底析构了没有。还是暗自调用了系统的析构。所以来记载一下析构的知识。


以下属转载,原文博客地址:https://www.cnblogs.com/puyangsky/p/5319470.html


一、定义
1. 作用:对象消亡时,自动被调用,用来释放对象占用的空间
2. 特点:
   (1) 名字与类名相同
   (2) 在前面需要加上”~”
   (3) 无参数,无返回值
   (4) 一个类最多只有一个析构函数
   (5) 不显示定义析构函数会调用缺省析构函数














二、用法
1.普通用法

class Test { int id; public: Test(int i) { id = i; } ~Test() { cout<<"ID: "< 
    

c++中的析构函数

分析:

在main函数中创建了t0,t1,t2,t3几个对象,这里先说一下C++创建对象的三种不同方式

1、Test p1(1);                               //栈中分配内存

2、Test p2 = Test(2);        //栈中分配内存,跟方法1相同,是方法1的完整模式

3、Test *p3 = new Test(3);     //堆中分配内存

方法1、2中都是在栈中分配内存,在栈中内存由系统自动的去分配和释放,而使用new创建的指针对象是在堆中分配内存,当不需要该对象时,需要我们手动的去释放,否则会造成内存泄漏

在上述程序中,t0和t1都是栈中的对象,在程序结束时由系统来释放,因此出现在“—-End of Main”之后。

t2,t3是new出来的堆中对象,所以需要手动的delete释放,因此出现在最前面。

另外有一点发现,就是栈中对象的释放顺序,是后定义的先释放,经过几次验证也如此,我想这恰好应征了栈的后进先出的特征。

用法二:

class Test { int id; public: Test(int i) { id = i; } ~Test() { cout<<"ID: "< 
    

c++中的析构函数

分析过程都在代码2的注释中。

—————————————————–END———————————————–

看来我创建的对象需要手动释放了。emm

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/227198.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午9:43
下一篇 2026年3月16日 下午9:43


相关推荐

  • gradle安装与入门

    gradle安装与入门1 Gradle 安装 本地也可不安装 不安装 gradle 配置选择 gradlewrappe 下载地址 http services gradle org distribution 下载你所需要对应的版本 gradle 4 6 1 bin zip 下载后解压到你想要的目录设置环境变量新建系统变量 变量名为 GRADLE HOME 变量值为 gradle 安装包所在目录添加到 PATH 环境中在 c

    2026年3月17日
    2
  • sublime3激活码 2021【在线破解激活】

    sublime3激活码 2021【在线破解激活】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    44
  • 机顶盒知识详解_罗盘的知识与技巧

    机顶盒知识详解_罗盘的知识与技巧机顶盒定义数字视频变换盒(英语:SetTopBox,简称STB),通常称作机顶盒或机上盒,是一个连接电视机与外部信号源的设备;它可以将压缩的数字信号转成电视内容,并在电视机上显示出来;信号可以来自有线电缆、卫星天线、宽带网络以及地面广播。机顶盒接收的内容除了模拟电视可以提供的图像、声音之外,更在于能够接收数据内容,包括电子节目指南、因特网网页、字幕等等;使用户能在现有电视机上观…

    2025年8月6日
    4
  • Idea激活码最新教程2024.2.5版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2024.2.5版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2024 2 5 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2024 2 5 成功激活

    2025年5月31日
    8
  • JAVA如何遍历arraylist数组,Java 程序使用Lambda表达式遍历ArrayList

    JAVA如何遍历arraylist数组,Java 程序使用Lambda表达式遍历ArrayListJava程序使用Lambda表达式遍历ArrayList在此示例中,我们将学习在Java中使用lambda表达式遍历数组列表的每个元素。要理解此示例,您应该了解以下Java编程主题:示例:将ArrayList作为函数参数传递示例importjava.util.ArrayList;classMain{publicstaticvoidmain(String[]args){//创建Ar…

    2022年7月22日
    11
  • 图像处理入门教程[通俗易懂]

    图像处理入门教程[通俗易懂]  最近有人问我图像处理怎么研究,怎么入门,怎么应用,我竟一时语塞。仔细想想,自己也搞了两年图像方面的研究,做个两个创新项目,发过两篇论文,也算是有点心得,于是总结总结和大家分享,希望能对大家有所帮助。在写这篇教程之前我本想多弄点插图,让文章看起来花哨一点,后来我觉得没必要这样做,大家花时间沉下心来读读文字没什么不好,况且学术和技术本身也不是多么花哨的东西。  一、图像处理的应用  这个其实没什么…

    2022年5月17日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号