C++|68.虚析构函数

文章目录

虚析构函数诞生的背景

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

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

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

问题

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


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

有可能会出现内存泄漏。

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

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

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

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

相关推荐
小珑也要变强1 小时前
队列基础概念
c语言·开发语言·数据结构·物联网
未来可期LJ2 小时前
【C++ 设计模式】单例模式的两种懒汉式和饿汉式
c++·单例模式·设计模式
Trouvaille ~3 小时前
【C++篇】C++类与对象深度解析(六):全面剖析拷贝省略、RVO、NRVO优化策略
c++·c++20·编译原理·编译器·类和对象·rvo·nrvo
little redcap3 小时前
第十九次CCF计算机软件能力认证-乔乔和牛牛逛超市
数据结构·c++·算法
Dola_Pan3 小时前
Linux文件IO(二)-文件操作使用详解
java·linux·服务器
wang_book3 小时前
Gitlab学习(007 gitlab项目操作)
java·运维·git·学习·spring·gitlab
AI原吾3 小时前
掌握Python-uinput:打造你的输入设备控制大师
开发语言·python·apython-uinput
机器视觉知识推荐、就业指导3 小时前
Qt/C++事件过滤器与控件响应重写的使用、场景的不同
开发语言·数据库·c++·qt
毕设木哥3 小时前
25届计算机专业毕设选题推荐-基于python的二手电子设备交易平台【源码+文档+讲解】
开发语言·python·计算机·django·毕业设计·课程设计·毕设
珞瑜·3 小时前
Matlab R2024B软件安装教程
开发语言·matlab