33 CPP类多态-如何析构派生类

news2024/11/24 20:26:00

33 CPP类多态-如何析构派生类

 派生类的析构函数在执行完后,会自动执行基类的析构函数,这是C++编译器强制的规定。

 这时候基类的内存模型:AA表示的就是Person类

 将基类的析构函数设置为虚函数后。

 

基类的虚函数表中多了一个函数,但是函数名并不是基类的析构函数~AA,而是用析构函数单词(destructor)的简写。

再查看派生类的内存模型。

 

之前有学习过,如果要在派生类中重定义基类的虚函数,它们的函数特征必须相同,也就是说函数名和参数列表要一致,但是基类和派生类的析构函数的函数名是不可能相同的额,不过,没关系,C++编译器会对它们做特别的处理,

析构派生类的注意事项:

1 析构派生类对象时,会自动调用基类的析构函数。与构造函数不同的是,在派生类的析构函数中,不用显示地调用基类的析构函数,因为每个类只有一个析构函数,编译器知道如何选择,无需程序员干涉。

2 析构函数可以手工调用,如果对象中有堆内存,析构函数中以下代码是必要的:

delete ptr;

ptr=nullptr;

3 用基类指针指向派生类对象时,delete基类指针调用的是基类的析构函数,不是派生类的,如果希望调用派生类的析构函数,就要把基类的析构函数设置为虚函数。

4 C++编译器对虚析构函数做了特别的处理。

5 对于基类,即使它不需要析构函数,也应该提供一个虚析构函数。

6 赋值运算符函数不能继承,派生类继承的函数特征标与基类完全相同,但赋值运算符函数的特征标 随类而异,它包含了一个类型为其所属类的形参

7)友元函数不是类成员,不能继承。

 

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

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

相关文章

性能测试(二)—— 常用测试工具、JMeter环境搭建、JMeter功能概述

目录 一、常用性能测试工具 1. 主流性能测试工具 1.1 LoadRunner 1.2 JMeter 1.3 LoadRunner 与 JMeter对比 二、JMeter环境搭建 1. 安装JDK 1.1 JDK下载 1.2 JDK配置环境变量 2. 安装JMeter 2.1 下载 2.2 安装 2.3 Jmeter环境配置 2.4 启动验证 三、JMeter功能…

[附源码]计算机毕业设计Python的中点游戏分享网站(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

反应式编程框架设计:如何使得程序调用不阻塞等待

前言: 程序在高并发的情况下,程序容易崩溃。主要的原因是:在高并发的情况下,有大量用户请求需要程序计算处理,而目前的处理方式是,为每个用户请求分配一个线程,当程序内部因为访问数据库等原因…

软件测试:Java VS Python,刚开始应该选择哪门语言进行入门呢?

前言 当你学完软件测试基本理论,掌握业务测试流程,功能测试可以搞定,数据库和linux玩得也很溜时,接下来想进一步进阶,那么学习一门编程语言必不可少。 同时,学习一门编程语言也是你成为自动化测试工程师乃…

如何正确使用JMeter性能测试?紧扣面试实际要求

前段时间专门挑了一段时间在准备面试。经过两次面试后,有一些比较深刻的认识。对于企业要求来说,除了对专业理论知识考究之外,对测试工具这块也是看重的。 一、使用JMeter测试快速入门 1、线程组是什么 进程: 一个正在执行的程序…

图解设计模式: 有趣的工厂模式

工厂模式 Factory Method 在工厂模式中 父子类的关系就像是生产工厂中模具一样, 由父类负责指定实例生成的方式 子类来决定生成具体的类. 具体的处理全部交给子类负责,目的就是为了将生产实例的框架和负责实例生产类解耦 示例程序 从下面这段示例来看看工厂模式到…

Codeforces Round #839 (Div. 3)

A. AB? 题意: t组测试每组给出以ab的形式给出算式,求ab的值。(a,b都是0~9) 代码: tint(input()) for i in range(t):sinput()print(eval(s)) B. Matrix Rotation 题意: t组测试每组给一个2*2的矩阵&…

NoSQL数据库原理与应用综合项目——Redis篇

NoSQL数据库原理与应用综合项目——Redis篇 文章目录NoSQL数据库原理与应用综合项目——Redis篇0、 写在前面1、本地数据或HDFS数据导入到Redis2、Redis数据库表操作2.1 Java API 连接Redis2.2 查询数据2.3 插入数据2.4 修改数据2.5 删除数据3、Windows远程连接Redis(Linux)4、…

谁说女生不可以学编程?维密超模放弃年薪千万,一心只当程序媛

说到IT行业,大家第一反应应该是程序员 谁说女生不可以学编程?维密超模放弃年薪千万,一心只当程序媛 感觉一说起IT工作者 大家都会想到一个男性的形象 但是其实 有一批脸美、胸大、腰细、腿长、还都热爱编程的妹纸正在加入你们的行列&#…

(附源码)Springboot宠物领养系统 毕业设计 241104

Springboot宠物领养系统 摘 要 如今,随着人们生活水平不断提高,人们的生活在物质满足的基础上,更多的人将生活的重点放在追求精神享受的过程中。于此同时,Internet铺天盖地的普及,使得这样的人纷纷通过Internet的方式去…

springboot 3.0 工程建立

springboot 3.0 工程建立 脚手架搭建 进入spring官网提供的https://start.spring.io/进行脚手架搭建。 选择 Maven进行包管理,语言选择JAVA,Spring Boot 版本选择3.0.0,JDK 版本选择17。并在右侧选择自己希望的依赖。结果如下图&#xff1…

基于SpringMVC+Hibernate+Layui城市智能消防决策平台设计

开发软件:Eclipse,可以用idea,mysql数据库 开发技术:SpringMVC,Spring,Hibernate,jquery,layui 本系统的功能主要分为两个角色,其中用户的功能有:登陆注册,查看火灾案例,火警报警,查看自己的报警…

【产品经理必备文档】述职报告/年终总结汇报ppt模板

今天和大家免费分享产品必备文档模板——产品经理述职文档(年终总结汇报)的ppt模板~~~ 【文档下载】 这个ppt模板可以在下方小程序里免费下载哦 【编写教程】 个人工作年终总结一般分成4部门:个人岗位职责、工作完成情况、年度经验总结、 1…

北语、北外2022年12月公派英语统考的通知

近日,北语和北外均发布了12月29日国家公派英语高级班结业统考的通知。与以往不同的是:为无法参加12月29日统考的学员增加一次考试机会,时间定于2023年2月25日,但需要提前报名。具体报名时间及方式参见两校的通知,知识人…

17_ 数据库 _ MySQL主从同步配置

文章目录一、主从同步的定义二、使用主从同步的好处三、主从同步的机制四、配置主从同步的基本步骤五、详细配置主从同步的方法5.1 备份主服务器原有数据到从服务器5.1.1 主服务器Ubuntu上进行备份5.1.2 在从服务器Windows上进行数据还原5.2 配置主服务器master(Ubu…

单商户商城系统功能拆解48—应用中心—消息通知

单商户商城系统,也称为B2C自营电商模式单店商城系统。可以快速帮助个人、机构和企业搭建自己的私域交易线上商城。 单商户商城系统完美契合私域流量变现闭环交易使用。通常拥有丰富的营销玩法,例如拼团,秒杀,砍价,包邮…

JUC(九)-线程池-认识JDK中的线程池

JUC、线程池相关内容 文章目录JUC、线程池相关内容一、 什么是线程池1.1 为什么要使用线程池二、 JDK 自带的线程池2.1 newFixedThreadPool方法2.2 newSingleThreadPool方法2.3 newCachedTreadPool方法2.4 newScheduleTreadPool方法2.4.5 Executors Demo2.5 newWorkStealingTre…

搞机器学习不会线性代数?那怎么行

搞机器学习不会线性代数?那怎么行! 文章目录搞机器学习不会线性代数?那怎么行!1 直观真正理解向量2 理解向量的加法与数乘3 理解向量乘法的本质3.1 向量内积3.2 向量外积4 理解基向量与线性无关4.1 如何理解基向量4.2 如何理解线性…

刷完了这份足足485页的“1000道Java工程师面经”,成功上岸!

前言 本人18年毕业于一家普通二本,考研凉了且没有实习经验,只做过两个项目会一点SpringBoot,每天就是不断地投简历、刷面经,感觉自己都要抑郁了 最后勉强进入了一家学校合作的外包公司干了3年的CRUD,刚开始每个月拿着…

当一个人学习编程之后,带来的人生有什么新变化?

数字化迅速蔓延的世界里,拥有技术技能(特别是编程技能)可以为你提供更多更好的个人发展机会。在这里,两位半路转行的程序员给你解释了为什么任何人都应该学习编写代码。因为,学习编程既然改变了他们的生活,…