【C++例7-5】派生类析构函数(多继承,含有嵌入对象)

知识点:

1.this指针指向对象自身

2.static静态成员变量

在类内声明,必须要在类外初始化

int Base3::base3 = 0;

3.由多基类继承而来的派生类构造时构造函数的调用

①先按继承基类的顺序调用基类的构造函数,有参传参,无参使用默认值,所以有

创建Base2 : 2
创建Base1 : 1
创建Base3 : 0

②初始化列表中形实参结合,创建Base1类型的number1和Base2类型的number2,自动创建number3,这里利用静态成员展示,表示是第二次创建,与第一次不同,这里形式参数和实际参数结合的顺序也是和类内私有成员函数的定义顺序一致,所以有

创建Base1 : 3
创建Base2 : 4
创建Base3 : 1

4.析构函数的执行

①先析构该派生类内自定义成员,顺序与成员被定义时顺序相反,即与构造函数调用顺序相反

析构Base3 :1
析构Base2 :4
析构Base1 :3

②再析构基类成员,顺序也与基类继承顺序相反

析构Base3 :0
析构Base1 :1
析构Base2 :2

注意:base3是静态成员,所以每次改变都会改变类内该变量的值,也就是无论创建多少个类的对象,静态成员只有一个副本,所以要看析构的是哪个对象,需要一个新的成员the_base3来记录

// 例7-5_派生类析构函数(多继承,含有嵌入对象)
#include<iostream>
using namespace std;
class Base1 {
public:Base1(int i) { base1 = i;cout << "创建Base1 : " << i << endl; }~Base1() { cout << "析构Base1 :" << this->base1 << endl; }
private:int base1;};class Base2 {
public:Base2(int i) {base2 = i;cout << "创建Base2 : " << i << endl;}~Base2() { cout << "析构Base2 :" << this->base2 << endl; }
private:int base2;
};class Base3 {
public:Base3() {cout << "创建Base3 : " << this->the_base3 << endl;base3++;}~Base3() { cout << "析构Base3 :" << this->the_base3 << endl; }
private:static int base3;int the_base3 = base3;
};int Base3::base3 = 0;
class Deriver :public Base2, public Base1, public Base3 {//派生新的类,注意基类继承而来的顺序
public:Deriver(int a, int b, int c, int d) :Base1(a), member2(d), member1(c), Base2(b) {}//注意基类名的个数与顺序,注意对象名的个数与顺序
private:Base1 member1;Base2 member2;Base3 member3;
};int main() {Deriver obj(1, 2, 3, 4);return 0;
}
// 输出
创建Base2 : 2
创建Base1 : 1
创建Base3 : 0
创建Base1 : 3
创建Base2 : 4
创建Base3 : 1
析构Base3 :1
析构Base2 :4
析构Base1 :3
析构Base3 :0
析构Base1 :1
析构Base2 :2

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

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

相关文章

大小端解释以及如何使用程序判断IDE的存储模式

今天让我们来了解一下大小端的概念吧 什么是大小端&#xff1f; 大端&#xff08;存储&#xff09;模式&#xff1a;指的是数据的低位保存在内存的高地址处&#xff0c;而数据的高位则保存在内存的低地址处。 小端&#xff08;存储&#xff09;模式&#xff1a;指的是数据的低位…

在 Windows 系统上彻底卸载 TeamViewer 软件

在 Windows 系统上彻底卸载 TeamViewer 软件 References 免费版仅供个人使用 您的会话将在 5 分钟后终止 Close TeamViewer by locating the TeamViewer icon in the system tray, right click and “Exit TeamViewer”. Right click Windows start menu then Control Panel -…

“PowerInfer:消费级GPU上的高效大语言模型推理引擎“

PowerInfer是由上海交通大学IPADS实验室开发的一个高效大语言模型&#xff08;LLM&#xff09;推理引擎&#xff0c;专为个人电脑&#xff08;PC&#xff09;上的消费者级GPU设计。它通过利用LLM推理中的高局部性&#xff0c;实现了快速且资源消耗低的模型推理&#xff0c;这一…

阿里二面凉了,难蹦。。。

分享一位同学阿里巴巴的后端面经&#xff0c;共有 2 面&#xff0c;第一面很顺利过了&#xff0c;可惜挂在第二面。 这两面的知识点范围&#xff0c;我帮大家罗列一下&#xff1a; 网络&#xff1a;TCP、HTTP mysql&#xff1a;索引应用、索引结构、隔离级别、最左匹配 redis…

数据分析专家能力模型

招式&#xff1a;懂商业&#xff08;业务能力&#xff09; 外功更偏重于技能&#xff0c;首先需要懂招式&#xff0c;即懂商业&#xff0c;数据分析最终是为业务服务的&#xff0c;无论是互联网企业准求的用户增长和UJM分解&#xff0c;还是传统企业追求的降本增效和精细化运营…

Linux加强篇-用户身份

目录 ⛳️推荐 用户身份与能力 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站 用户身份与能力 在RHEL 8系统中&#xff0c;用户身份有下面这些&#xff0c;相当于皇宫的一些身…

react经验13:使用非react封装的富文本组件

应用场景 已知开源社区已经有react封装的富文本组件&#xff0c;一般的文本编辑需求足够满足&#xff0c;但是当有特殊需求无法满足时&#xff0c;可能需要用到非react封装的富文本组件。 当使用非react封装的富文本编辑器时&#xff0c;react组件内的state与编辑器的内容交换…

图像处理之Retinex算法(C++)

图像处理之Retinex算法&#xff08;C&#xff09; 文章目录 图像处理之Retinex算法&#xff08;C&#xff09;前言一、单尺度Retinex&#xff08;SSR&#xff09;1.原理2.代码实现3.结果展示 二、多尺度Retinex&#xff08;MSR&#xff09;1.原理2.代码实现3.结果展示 三、带色…

Axure设计美观友好的后台框架页

使用Axure设计后台框架页 优点介绍&#xff1a; **1、使用中继器灵活配置菜单项&#xff1b; 2、二级菜单面板跟随一级菜单位置显示&#xff1b; 3、菜单链接打开后&#xff0c;联动添加tab标签&#xff1b; 4、标签页与iframe内容联动&#xff0c;可关闭&#xff1b; 5、左侧…

2024-04-23 问AI: 在深度学习中,介绍一下u-net模型。

文心一言 U-Net模型是一种在深度学习中广泛应用的卷积神经网络结构&#xff0c;主要用于图像分割任务。这种模型最初在生物医学图像处理中得到了广泛应用&#xff0c;但由于其高效且可靠的性能&#xff0c;U-Net也逐渐被用于遥感图像分割等领域。 U-Net模型的结构对称&#x…

DNS 服务器不同类型有什么作用?

所有 DNS 服务器都属于以下四个类别之一&#xff1a;递归解析器、根域名服务器、TLD 域名服务器和权威性域名服务器。在典型 DNS 查找中&#xff08;当没有正在进行的高速缓存时&#xff09;&#xff0c;这四个 DNS 服务器协同工作来完成将指定域的 IP 地址提供给客户端的任务&…

JVM--Java对象到底存在哪?

Java对象存放在堆中&#xff0c;但堆又分为新生代和老年代&#xff0c;新生代又细分为 Eden、From Survivor、To Survivor。那我们创建的对象到底在哪里&#xff1f; 堆分为新生代和老年代&#xff0c;新生代用于存放使用后就要被回收的对象&#xff08;朝生夕死&#xff09;&a…

iOS - 多线程的安全隐患

文章目录 iOS - 多线程的安全隐患1. 卖票案例2. 多线程安全隐患的解决方案2.1 iOS中的线程同步方案2.2 同步方案的使用2.2.1 OSSpinLock2.2.1.1 使用方法&#xff1a;2.2.1.2 案例 2.2.2 os_unfair_lock2.2.2.1 使用方法&#xff1a;2.2.2.2 案例 2.2.3 pthread_mutex2.2.3.1 使…

【Ne4j图数据库入门笔记1】图形数据建模初识

1.1 图形建模指南 图形数据建模是用户将任意域描述为节点的连接图以及与属性和标签关系的过程。Neo4j 图数据模型旨在以 Cypher 查询的形式回答问题&#xff0c;并通过组织图数据库的数据结构来解决业务和技术问题。 1.1.1 图形数据模型介绍 图形数据模型通常被称为对白板友…

【大模型】大模型时代的语音合成:音频的离散化表示

&#x1f512;文章目录 &#x1f4ca;什么是音频离散化&#x1f3ac;音频离散化是什么 &#x1f308;SoundStream、Encodec&#x1f302; SoundStream&#x1f680;Encodec &#x1f4ca;什么是音频离散化 &#x1f3ac;音频离散化是什么 在自然语言处理&#xff08;NLP&…

Amazon云计算AWS之[2]弹性计算云EC2

文章目录 说明EC2基本架构Amazon机器映象&#xff08;AMI&#xff09;实例&#xff08;Instance&#xff09;弹性块存储&#xff08;EBS&#xff09; EC2关键技术地理区域和可用区域EC2通信机制弹性负载均衡监控服务自动缩放服务管理控制台 EC2安全及容错机制EC2弹性IP地址 说明…

KingbaseES数据库copy导入导出

数据库版本&#xff1a;KingbaseES V008R006C008B0014 文章目录如下 1. 语法说明 2. 导出数据 2.1. 基本用法 2.2. 只导出某列 2.3. 指定分隔符 2.4. 导出为二进制格式 2.5. 替换导出的NULL数据 2.6. 导出SELECT查询结果 3. 导入数据 3.1. 基本用法 3.2. 只导入某列…

恒峰智慧科技—森林消防泵:既可灭除火灾,又可清理水患

在广袤的森林中&#xff0c;火灾与水患如同潜伏的猛兽&#xff0c;时刻威胁着生态的安全。然而&#xff0c;随着科技的进步&#xff0c;我们有了更强大的武器来对抗这些威胁——森林消防泵。这款神奇的设备不仅能迅速扑灭火灾&#xff0c;还能在雨季到来时清理水患&#xff0c;…

Linux:进程与计划任务

文章目录 Linux&#xff1a;进程与计划任务一、进程1、进程是什么2、进程状态 二、列出进程命令1、查看静态的进程统计信息——“ps”Play1&#xff1a;“ps aux”Play2:ps -elf 2、查看静态的进程统计信息——“top”段首解析进程信息区解释 三、运行与终止进程3.1、运行进程3…

spring的跨域问题

跨域问题 什么是跨域解决跨域 什么是跨域 跨域问题本质是浏览器的一种保护机制&#xff0c;它的初衷是为了保证用户的安全&#xff0c;防止恶意网站窃取数据。如果出现了以下情况中的任意一种&#xff0c;那么它就是跨域请求&#xff1a; 1、协议不同&#xff0c;如 http 和 h…