多态下,为什么使用virtual修饰析构函数

news2024/10/5 16:21:17

多态下,为什么使用virtual修饰析构函数

问题:

用virtual修饰的析构函数和非虚函数的析构函数有什么区别?

当时以为:只有经过virtual修饰的析构函数,派生类生命周期结束时,才会自动的先调用派生类的析构函数,然后调用基类的析构函数;否则,只会调用派生类的析构函数,不会调用基类的析构函数。

分析:

1. 调用派生类析构函数后,会自动调用其基类析构函数

在这里插入图片描述

2. 为多态基类声明virtual析构函数

多态:

  • 派生类对虚函数进行了重写
  • 通过基类的指针或者引用去调用虚函数

通常base class会有多个derived class,有时并不关心派生类的差别,可以设计一个factory工厂函数,返回指针指向一个派生类对象,使用时,由factory来创建对象。

Basic* factory();

对象位于heap,为了避免泄漏内存和其他资源,需要将factory()返回的每个对象,适当的delete

Basic* pb = factory();
...
    
delete pb;

pb指针指向一个derived class 对象,而这个对象需要经由一个base class 指针被释放。

  • 如果目前的base class有一个non-virtual析构函数

其结果未定义——执行时通常发生的是对象的derived成分没被销毁。对于Derive对象,其Derive成分被销毁,而其基类Basic的析构函数未被调用。出现一个“局部销毁”对象
在这里插入图片描述

  • 给base class一个virtaul析构函数,就能解决这个问题
    在这里插入图片描述

tips:基类析构函数带有virtaul修饰,派生类的析构函数省略virtual也是虚函数


  • 如果class带有任何virtual函数,它就该拥有一个virtual析构函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/662117.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mybatisplus连接sqlserver配置

目录 前言&#xff1a; 一&#xff1a;所需依赖&#xff1a; 二&#xff1a;application.yml 三:分页插件 前言&#xff1a; 本文主要讲解连接sqlserver的配置 一&#xff1a;所需依赖&#xff1a; <?xml version"1.0" encoding"UTF-8"?> &l…

hutool工具包的实用方法简单介绍

说明&#xff1a;Hutool是一个小而全的Java工具类库&#xff08;详细参考&#xff1a;https://hutool.cn/docs/#/&#xff09;&#xff0c;使用前需要先添加依赖 &#xff08;添加依赖&#xff09; <dependency><groupId>cn.hutool</groupId><artifactId…

Redis从入门到精通进阶篇之持久化RDB

文章目录 RDB持久化工作原理 Redis 6的持久化机制主要有两种&#xff1a;RDB&#xff08;Redis DataBase&#xff09;和AOF&#xff08;Append Only File&#xff09;。本文将详细介绍这两种持久化方式的工作原理和配置要点。 RDB持久化 RDB持久化是将当前进程的数据生成快照…

项目经理,35岁以后就很难再有竞争力了吗?

早上好&#xff0c;我是老原。 知乎热榜上有一个问题吸引了我的注意&#xff1a; 说句公道话&#xff0c;35岁确实是个坎&#xff0c;这个坎在吃青春饭的行业来说&#xff0c;格外明显。 体力和精力都大不如年轻人&#xff0c;从性价比的角度来说&#xff0c;公司还是不会用…

2.2ORBSLAM3之几种特征点提取方法

0.简介 本节对ORB特征、SIFT特征、SURF特征、Harris角点、Shi-Tomas角点的提取与描述子计算原理进行总结&#xff0c;其中Harris角点、Shi-Tomas角点是关键点&#xff0c;没有对应的描述子&#xff0c;一般用于光流跟踪(Vins系列算法)。 综合所有的特征检测算法来看&#xff…

win设置静态IP

win设置静态IP地址 前言 局域网&#xff0c;IP地址的管理方式主要有静态分配方式和动态分配方式。 静态分配IP地址是指给每一台计算机都分配一个固定的IP地址&#xff0c;优点是便于管理&#xff0c;特别是在根据IP地址限制网络流量的局域网中&#xff0c;以固定的IP地址或IP地…

Django高级扩展之tinymce富文本实现

目录 安装 在站点中使用 注册富文本应用 添加配置文件 创建模型类 生成迁移文件 执行表迁移 配置站点 富文本不显示解决 修改主题 修改语言设置 自定义视图使用 设置路由 视图 创建模板 总结 安装 pip install django-tinymce 安装过程如下&#xff1a; 在站点…

宾军志:数据管理能力成熟度模型建设历程

4月27日在2023数据治理新实践峰会上&#xff0c;中国电子信息行业联合会数据资产管理专委会秘书长宾军志先生为大家分享了《数据管理能力成熟度模型建设历程》主题演讲。 以下为宾军志先生的演讲实录&#xff0c;为了方便阅读&#xff0c;小编做了一些字句修改和文本优化。大家…

JDK安装2023最完整教程与配置(零基础)

一、JDK简介 学习Java&#xff0c;需要下载并安装JDK&#xff0c;即Java Development Kit、Java开发工具包&#xff0c;为了能够打开java程序&#xff0c;就需要按照操作系统的要求进行环境变量的配置。 二、JDK下载 要想运行java开发的程序&#xff0c;必须先下载jdk&#…

io.netty学习 (一)Netty入门

目录 前言 Java原生API之痛 Netty的优势 非阻塞 I/O 丰富的协议 异步和事件驱动 精心设计的API 丰富的缓冲实现 高效的网络传输 Netty 核心概念 核心组件 传输服务 协议支持 Netty简单应用 总结 前言 关于Netty的学习&#xff0c;最近看了不少有关视频和书籍&am…

【git】VSCode 上的文件夹如何上传到 github 上?

一、重要意义 VSCode 上的文件夹上传到github有什么意义&#xff1f; 版本控制&#xff1a;通过将文件夹上传到GitHub&#xff0c;您可以使用Git进行版本控制。这意味着您可以记录每个文件的修改历史&#xff0c;并轻松地切换到以前的版本。如果您犯了错误或需要回滚更改&…

数据结构与算法·第10章【内部排序】

概念 排序问题可以分为内部排序和外部排序。若整个排序过程不需要访问外存便能完成&#xff0c;则称此类排序问题为内部排序&#xff1b;反之&#xff0c;若参加排序的记录数量很大&#xff0c;整个序列的排序过程不可能在内存中完成&#xff0c;则称此类排序问题为外部排序。…

成为一名成功的项目经理,你需要了解这些

作为一名有抱负的项目经理&#xff0c;你需要了解自己的职责和任务。你的职责不仅仅是确保项目的成功&#xff0c;更要负责带领团队制定可靠的执行计划&#xff0c;并确保所有工作按计划有序进行。因此&#xff0c;你必须具备身兼多职的能力&#xff0c;以确保项目能够顺利完成…

机器视觉初步5-2:图像增强专题

图像增强是一种提高图像质量和信息量的技术&#xff0c;常用于图像处理、计算机视觉和机器学习中。常见的图像增强方法包括直方图均衡化、高斯滤波、锐化、对比度拉伸、图像平滑、图像锐化、图像滤波、图像金字塔等。 以下是一些常见的图像增强方法的示例代码&#xff0c;使用H…

数据结构——顺序表(文字+代码+带图详细讲解)

在 C 语言中&#xff0c;顺序表可以使用数组来实现。顺序表是一种线性表&#xff0c;其中的元素在物理上连续存储&#xff0c;可以通过下标访问任意元素。 顺序表的基本操作包括插入、删除、查找、遍历和初始化等。 这段代码定义了一个顺序表的结构体&#xff0c;其中包括三个…

《C++多态》

文章目录 思维导图一、多态的概念二、多态的定义及其实现1.多态的构成条件2.虚函数3.虚函数的重写不构成多态的情况展示4.虚函数重写的两个例外4.1 协变4.2析构函数的重写 5.C11 override和final5.1. final5.2.override 三、抽象类1.概念2、对比纯虚函数与override3.接口继承和…

suse linux安装介质下载

在suse官网注册一个账号&#xff0c;就可以免费在上面下载软件的安装介质。 SUSE HAE介质下载和安装说明&#xff1a;

工作十年还不知道数字化转型工具?别等老板问你时才去查资料!

在职场中&#xff0c;到底有什么比较好上手又能轻易提升数字化的工具&#xff1f; 应粉丝邀请&#xff0c;我来给出一个回答。 对于企业来说&#xff0c;你可以选择大屏。对于个人来说&#xff0c;你可以选择仪表板。 工作汇报已经越来越卷&#xff0c;对于个人来说&#xff0c…

Windows远程桌面(mstsc)不能复制粘贴的解决办法

最近突然发现Windows远程桌面(mstsc)不能在远程端和本地端之间自由的复制和粘贴了&#xff0c;这还是非常影响使用体验的&#xff1b;因此记录一下解决方法&#xff0c;以便后续再遇到此类问题时查看如何解决&#xff1b; 文章目录 一、背景二、解决办法2.1 方法1 重启rdpclip.…

ChatGPT或致全球3亿人失业,人工智能时代下教育会发生什么样的变革?

不久前&#xff0c;谷歌教育发布了一份关于未来教育的研究报告。该报告由谷歌公司和 Canvas8合作&#xff0c;对来自世界24个国家的94位教育专家进行了历时长达2年的调研&#xff0c;探讨了未来教育形态、教育在未来的作用、教育公平、全球人才需求、教学方式、学习生态、工作技…