C++|68.虚析构函数

文章目录

虚析构函数诞生的背景

Derived继承了Base,Derived本身自带析构函数,而由于继承了Base,Derived是否也会将Base的构造函数和析构函数一并继承过来?

经检验,Derived类的构造函数包括Base和自身自带,同时析构函数亦是如此。

且父类构造函数优先于自身,所继承的父类的析构函数晚于自身。

问题

若创造一个子类的对象,并使用一个父类的指针指向/管理它,结果会如何


发现~Derived()并没有被调用,也就是说在Derived()中申请的m_Array并没有被销毁。

有可能会出现内存泄漏。

原因可能是Base(父类)指针并不知道其指向的是一个子类。

(构造函数随子类,有两个,析构函数随父类,只有一个)

解决方案------虚析构函数

在父类的析构函数添加virtual(相当于一个提醒标志),使其转化为虚函数,这也就意味着会建立对应的虚函数表,当析构时不单会对当前类进行考虑,还会考虑所派生的子类的虚够函数。

相关推荐
自不量力的A同学4 小时前
Solon AI v3.9 正式发布:全能 Skill 爆发
java·网络·人工智能
Liekkas Kono4 小时前
RapidOCR Python 贡献指南
开发语言·python·rapidocr
张张努力变强4 小时前
C++ STL string 类:常用接口 + auto + 范围 for全攻略,字符串操作效率拉满
开发语言·数据结构·c++·算法·stl
万岳科技系统开发4 小时前
食堂采购系统源码库存扣减算法与并发控制实现详解
java·前端·数据库·算法
xyq20244 小时前
Matplotlib 绘图线
开发语言
独断万古他化4 小时前
【Spring 原理】Bean 的作用域与生命周期
java·后端·spring
小镇敲码人4 小时前
探索CANN框架中TBE仓库:张量加速引擎的优化之道
c++·华为·acl·cann·ops-nn
m0_694845575 小时前
tinylisp 是什么?超轻量 Lisp 解释器编译与运行教程
服务器·开发语言·云计算·github·lisp
平安的平安5 小时前
面向大模型算子开发的高效编程范式PyPTO深度解析
c++·mfc
*小海豚*5 小时前
在linux服务器上DNS正常,但是java应用调用第三方解析域名报错
java·linux·服务器