虚析构函数

news/2024/10/25 5:24:58/

1)类指针指向本身的对象

Son  *xiaoming = new Son;

delete xiaoming;

构造及析构顺序:

父类构造

子类构造;

子类析构;

父类析构。

2)父类指针指向子类对象,,父类析构函数不是虚函数

Father *father = new Son;

delete  father.

构造及析构顺序:

父类构造

子类构造;

父类析构。

3)父类指针指向子类对象,,父类析构函数是虚函数

Father *father = new Son;

delete  father.

构造及析构顺序:

父类构造

子类构造;

子类析构;

父类析构。

结论:1)如果是自身的类指针指向自身的类对象,不会出现问题。

2)因为存在多态性,如果父类的析构函数不为虚函数,则会出现问题,所以,为增强程序的鲁棒性,则父类的析构函数中设置为虚函数。

virtual  Father::~Father(){}

————————————————
以下转载:

版权声明:本文为CSDN博主「黑啤是真的皮」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_44111565/article/details/103308186

为什么需要虚析构函数(超详细)
虚析构函数是为了解决父类指针指向子类对象时,释放子类对象的资源时,释放不完全,造成的内存泄漏问题。

多态
发生多态的条件是,父类指针或引用指向子类对象,虚函数重写。

子类会继承父类对象的所有的成员变量和成员函数(除了构造,析构,拷贝构造和赋值操作运算符)。

分析
发生继承后,子类的成员函数比父类多,所以父类指针无法指向子类的成员变量或者函数。即父类指针无法指向子类的析构函数。


所以会造成子类资源释放不完全,所以我们有两种方法可以解决这个问题。

1.将父类指针强转为子类类型的指针

运行结果

2.将父类的析构函数写为虚析构函数

运行结果


http://www.ppmy.cn/news/1200046.html

相关文章

spring面试题笔记

SpringBoot 有几种读取配置文件的方式 1.value 必须是bean里才能生效,,final或static无法生效 2ConfigurationProperties注解 ConfigurationProperties是springboot提供读取配置文件的一个注解 注意: 前缀定义了哪些外部属性将绑定到类的字…

挑战100天 AI In LeetCode Day02(1)

挑战100天 AI In LeetCode Day02(1) 一、LeetCode介绍二、LeetCode 热题 HOT 100-32.1 题目2.2 题解 三、面试经典 150 题-33.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站,提供各种算法和数据结构的题目,面向程序…

老胡的周刊(第114期)

老胡的信息周刊[1],记录这周我看到的有价值的信息,主要针对计算机领域,内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。 🎯 项目 pyvideotrans[2] 将视频从一种语言翻译为另一…

装修服务预约小程序的内容如何

大小装修不断,市场中大小品牌也比较多,对需求客户来说,可以线下咨询也可以线上寻找品牌,总是可以找到满意的服务公司,而对装修公司来说如今线下流量匮乏,很多东西也难以通过线下方式承载,更需要…

qt+opengl(一)

QtOpenGL系列 qt opengl 绘制点、线、三角形、多边形(二) 文章目录 QtOpenGL系列一、环境二、使用步骤1.引入库2. 创建OpenGLWidget 一、环境 Qt5.15 MingGW 32-Bit .pro QT openglwin32:LIBS -lOpengl32 -lglu32 unix:LIBS -lglut -lGLU二、…

Java 8 中的 Stream API - map() 方法详解

摘要: Java 8 中的 Stream API 提供了一种新的处理集合和数组的方式,可以使代码更加简洁、易读,同时还可以提高性能。其中 map() 方法是比较常用的方法之一,它可以将 Stream 对象中的每个元素映射为另一个元素。本文将对 Java 8 中…

以订单退款流程为例,聊聊如何优化策略模式

如果有人问你什么是策略模式?你可以尝试这样回答 策略模式是一种行为设计模式,它允许在运行时根据不同的情况选择不同的算法策略。这种模式将算法的定义与使用的代码分离开来,使得代码更加可读、可维护和可扩展。 在策略模式中,通…

宏转录组分析揭示不同土壤生境中氮循环基因的表达

发表期刊:msystems 发表时间:2023 影响因子:6.4 DOI: 10.1128/msystems.00315-23 01、研究背景 与空白土壤相比,植物根系和根际细菌之间的相互作用调节了氮(N)的循环过程,并创造了富含低分…