C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究

思考这样一串代码的运行结果:

#include <iostream>
using namespace std;
class Person
{
public:~Person() { cout << "~Person()" << endl; }
};
class Student:public Person
{
public:~Student() { cout << "~Student()" << endl; }
};int main()
{Person p;Student s;return 0;
}

结果为:

甚至这样:

 搜了不少的博客发现很少有把这样一个运行结果说清楚的,于是写一篇博客补充一下:

在我的往期文章C++入门11——详解C++继承(菱形继承与虚拟继承)中已经介绍了:

构造时先父后子,析构时先子后父。所以这里就不再详细说这个问题。


其实造成这样的运行结果原因也很简单,在我的往期文章C++入门5——C/C++动态内存管理(new与delete)中提过一嘴:局部变量是存放在栈区上的,而栈遵循先进先出,后进后出的原则:

在我们的代码中:

①p首先被定义,被压入栈中;

②然后s被定义,被压入栈中,位于p的上方;

③当main函数结束时,栈开始弹出对象进行销毁:

所以先弹出s再弹出p,又结合析构时先子后父的原则:

④Student是Person的派生类,所以s弹出时先调用~Student(),再调用~Person();

⑤p弹出时只调用~Person()。

 

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

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

相关文章

Linus Torvalds解释为什么Linux开发人员趋向老龄化反而是件好事

Linux 的关键人物莱纳斯-托瓦尔兹&#xff08;Linus Torvalds&#xff09;说&#xff0c;尽管长期以来一直有关于开源软件开发领域出现倦怠的报道&#xff0c;但 Linux 仍一如既往地强大–尽管他承认&#xff0c;由于其规模和范围&#xff0c;他的项目也许是一个例外。 本周一&…

HTML引用CSS

CSS 样式需要引用到 HTML 中才能真正有效&#xff0c;那么如何才能在 HTML 中引用 CSS 呢&#xff1f;下面就来介绍一下。 1. 内嵌样式表 您可以在 HTML 头部&#xff08;<head>标签内&#xff09;的<style>标签中定义 CSS 样式&#xff0c;使用内嵌样式表定义的…

深入解读MaaS技术架构:从模型服务到智能部署的全流程分析

随着人工智能&#xff08;AI&#xff09;的迅速发展&#xff0c;MaaS&#xff08;Model as a Service&#xff0c;模型即服务&#xff09;技术架构应运而生。它通过将复杂的AI模型封装为标准化服务&#xff0c;降低了模型的开发和部署门槛&#xff0c;帮助企业快速实现业务场景…

传统产品经理如何快速转行成为顶尖的AI产品经理?

前言 产品经理本身便是一个需要不断学习、不断实践的岗位&#xff0c;即使是AI产品经理&#xff0c;也不能脱离产品经理岗位的本质。 另外&#xff0c;要想知道具体如何转行成为顶尖的AI产品经理&#xff0c;我们首先要明确两个问题&#xff0c;即&#xff1a; 什么是AI产品…

RAG 涨点小技巧——RAG上下文召回

昨天Claude团队发了一个关于RAG的博客&#xff0c;介绍了上下文召回的思路&#xff0c;可以看看。先看看标准的RAG&#xff08;检索增强生成&#xff09;是怎么做的&#xff1f; 将用于检索的知识库&#xff08;文档&#xff09;拆为小&#xff08;几百个token&#xff09;的文…

商业银行应用安全架构设计实践

传统的信息安全工作通常偏向于事中或事后检测漏洞,随着敏捷开发工作的逐步推进,商业银行认识到安全架构设计在实现IT降本增效方面的独特优势。近几年,商业银行逐步构建了安全架构设计工作体系,在组织人员、安全技术与管控流程方面,与企业IT架构密切协同,着力建设安全公共…

GPU与国产芯片异构通信方案,异构万卡集群 初步调研

视频分享在这&#xff1a; 3.1异构万卡集群&#xff0c;GPU与国产计算卡芯片异构通信_哔哩哔哩_bilibili 国内已经有三家&#xff0c;实现了异构集群&#xff0c;GPU与国产芯片异构通信方案&#xff0c;初步调用结果如下。 异构集群的挑战 异构芯片间的混训主要面临两大挑战…

《概率论与数理统计》学渣笔记

文章目录 1 随机事件和概率1.1 古典概型求概率随机分配问题简单随机抽样问题 1.2 几何概型求概率1.3 重要公式求概率 2 一维随机变量及其分布2.1 随机变量及其分布函数的定义离散型随机变量及其概率分布&#xff08;概率分布&#xff09;连续型随机变量及其概率分布&#xff08…

Java之线程篇六

目录 CAS CAS伪代码 CAS的应用 实现原子类 实现自旋锁 CAS的ABA问题 ABA问题导致BUG的例子 相关面试题 synchronized原理 synchronized特性 加锁过程 相关面试题 Callable 相关面试题 JUC的常见类 ReentrantLock ReentrantLock 和 synchronized 的区别: 原…

《大学操作系统课程:开启计算机世界的关键之门》

在大学的计算机科学与技术专业中&#xff0c;操作系统课程犹如一把钥匙&#xff0c;为学子们打开了深入了解计算机系统运行机制的大门。 操作系统课程首先会带领你探索操作系统的基本概念。你会明白操作系统是一种系统软件&#xff0c;它管理着计算机的硬件资源和软件资源&…

win系统接入google_auth实现动态密码,加强保护

开源代码地址&#xff1a;windows动态密码: 针对win服务器进行的动态密码管控&#xff0c;需要配合谷歌的身份认证APP使用 (gitee.com) 为什么要搞个动态密码呢&#xff1f; 首先云服务器启用了远程访问&#xff0c;虽然更换了端口以及初始用户名&#xff0c;不过还是是不是被…

核心复现—计及需求响应的区域综合能源系统双层优化调度策略

目录 一、主要内容&#xff1a; 二、摘要介绍&#xff1a; 三、综合能源系统结构&#xff1a; 四、实际仿真运行结果&#xff1a; 五、 代码及数据下载&#xff1a; 一、主要内容&#xff1a; 在模型构建部分&#xff1a;建立了一个综合能源系统双层优化调度模型&#xf…

南京服务器测评【浪浪云】

前言 优质的服务器对于企业来说无疑是一把快速实现科技化成长的利剑。而南京&#xff0c;作为中国科技龙头之一的城市&#xff0c;也对服务器的需求愈发旺盛。而作为国内领先的云服务商&#xff0c;浪浪云致力于用科技培植企业的成长&#xff0c;其在南京的服务器便是企业数字化…

计算机毕业设计springboot+vue项目分享在线服务平台

目录 功能和技术介绍系统实现截图开发核心技术介绍&#xff1a;使用说明开发步骤编译运行需求分析系统设计软件测试核心代码部分展示详细视频演示源码获取 功能和技术介绍 本项目包含程序源码和MySql脚本和文档,idea开发,支持Eclipse。使用vue的本质是SpringFramework【IoC&am…

0基础跟德姆(dom)一起学AI 数据处理和统计分析07-分组和会员数据分析

向量化函数及Lambda表达式 * 分组操作相关 * 分组聚合 * 分组转换 * 分组过滤 * DataFrameGroupBy对象介绍 * 会员分析案例-数据透视表 --- 1.向量化函数 * 分析代码 python def avg_test2(x,y): if x20: return np.NaN else: retu…

【OSS安全最佳实践】对OSS内身份证图片中身份证号进行脱敏

为确保存储在私有OSS Bucket特定文件夹中包含中国内地身份证信息的PNG、JPG、JPEG、BMP或WEBP格式图片&#xff0c;在与其他用户共享时身份证信息不被泄露&#xff0c;可使用数据安全中心 DSC&#xff08;Data Security Center&#xff09;的图片脱敏功能。DSC目前仅支持对身份…

react hooks--useRef

基本用法 在类组件中获取一个dom元素实例&#xff0c;可以通过React.CreateRef或者回调函数的方式去获取。语法&#xff1a;const refContainer useRef(initialValue);使用场景&#xff1a;在 React 中进行 DOM 操作时&#xff0c;用来获取 DOM作用&#xff1a;返回一个带有 …

构建高可用和高防御力的云服务架构第五部分:PolarDB(5/5)

引言 云计算与数据库服务 云计算作为一种革命性的技术&#xff0c;已经深刻改变了信息技术行业的面貌。它通过提供按需分配的计算资源&#xff0c;使得数据存储、处理和分析变得更加灵活和高效。在云计算的众多服务中&#xff0c;数据库服务扮演着核心角色。数据库服务不仅负…

【C++高阶】深入理解C++ I/O流:标准库中的隐藏宝石

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;C 特殊类 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀ C IO流 &#x1f4d2;1. C语言的输入…

Stable Diffusion 优秀博客转载

初版论文地址&#xff1a;https://arxiv.org/pdf/2112.10752 主要流程图&#xff1a; Latent Diffusion Models&#xff08;LDMs&#xff09; DDPM是"Denoising Diffusion Probabilistic Models"的缩写&#xff0c; 去噪扩散概率模型 博客&#xff1a; 【论文阅读…