C++(继承下)

news2024/11/15 14:22:55

目录:

         1.继承与有元

         2.继承与静态成员

         3.单继承、多继承

         4.如何定义一个不能被继承的类??

         5.分享有意思的一道题

         6.菱形继承及菱形虚拟继承

-------------------------------------------------------------------------------------------------------------------------

1.继承与有元

直接给结论  : 有元关系不能被继承(也就是说基类有元不能不能访问子类私有和保护成员

有元函数是一种定义在类外的函数,但是需要在类内声明即可(有元函数是可以在类外访问类内的变化/私有成员的一种特殊函数)

 但是如果Display也许想在类外访问子类的私有/保护成员怎么办呢???

--------------------------------------------------------------------------------------------------------------------------------

2.继承与静态成员

基类定义了static静态成员,则各个继承体系里面只有一个这样的成员

 但是对于static修饰了的_count就不一样了

 地址也都是相同的

 --------------------------------------------------------------------------------------------------------------------------

3.复杂的菱形继承及菱形虚拟继承

单继承 : 一个子类只有一个直接父亲时我们称这个继承关系为单继承

 多继承 : 一个子类有两个或以上直接父亲时称这个继承关系为多继承

 

 --------------------------------------------------------------------------------------------------------------------------------

4.如何定义一个不能被继承的类??

 5.分享有意思的一道题

分析 p1 、 p2 、p3 的大小关系

 现在这个Derive这个类有3个部分构成   一个Base1 Base2两个父类和它自己本身的成员构成

Derive继承了Base1 、 Base2谁在前谁在后呢???

先继承的在前面

 

 p1和p3指向的是同一个位置,但是意义是不一样的

p3指向这个位置看的是整体,p1指向这个位置看的是Base1那个部分

p1=p3 !=p2

我们可以来探索一下p1/p3   与p2的大小关系

 可以看出来 p2大于p1/p3       ---  这是为什么呢???

------------------------------------------------------------------------------------------------------------------

6.菱形继承

菱形继承是多继承的一种特殊情况

我们先看看菱形继承的问题

数据冗余和二义性

 在Assistant中Person的成员会有两份

二义性是Assistant的对象去访问_name不知道是要去访问谁的

二义性问题的解决很简单,指定作用域就可以了

 那么我们该怎么解决这边的数据冗余问题呢???

C++引出了菱形虚拟继承     -----     virtual(虚继承)

 

 菱形虚拟继承解决了二义性和虚拟继承

那么虚继承是如何解决二义性和数据冗余的呢????

这是在不使用菱形虚拟继承的情况下,通过指定作用域来解决二义性的问题,并查看了D在内存中的存储结构

我们再来看看虚继承之后的D中的成员在内存中的存储结构

 

 解决了数据冗余和二义性

但是我们发现我们多使用了4字节的空间,浪费了空间,好像并没有节省空间

 但是你节省的是A对象,此时A对象是一个只有一个整形成员,但是如果A当中的成员是一个数组呢 _a[1000]    4000个字节    ,那么我们如果不使用虚继承的话,在内存当中B 、C对象都继承一份,就需要8000字节,但是如果使用虚继承的话,就只需要存一份在公共区域4000字节,只是多花4字节的指针指向这个区域罢了

-------------------------------------------------------------------------------------------------------------------

B 、 C对象空间里面的东西到底是什么

 多出来的这两个,貌似是地址

20、12是一个距离,偏移量,是距离这个公共的A内存的距离

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

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

相关文章

【c语言】全局变量 | 局部变量的生命周期与作用域

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ…

亚马逊云科技赋能客户,为海思科打造安全高效的营销业务中台系统

羽翼渐丰&#xff0c;翱翔云端 携手亚马逊云科技&#xff0c;打造互联网级企业解决方案 秉承“为客户创造价值”的理念&#xff0c;在公司发展过程中&#xff0c;博智信息先后服务了众多知名企业&#xff0c;客户行业覆盖制造、零售、餐饮、科技、电子等。经过近20年的发展&a…

AutoGPT 是 prompt 工程的下一个前沿

前言 最近了解到Auto GPT的上线&#xff0c;下面我来整理一下整个体验过程&#xff0c;希望对大家有所帮助和启发。 首先Auto GPT是 OpenAI 的 Andrej Karpathy 都在大力宣传的一个开源项目&#xff0c;他认为 AutoGPT 是 prompt 工程的下一个前沿。 近日&#xff0c;AI 界貌…

自助式数据分析平台:jvs数据智仓-统计报表的使用条件及界面介绍

统计报表界面介绍 统计报表是指利用表格和报表等形式&#xff0c;将数据以清晰的结构和布局的方式呈现出来&#xff0c;以便用户进行数据分析和决策制定的一种BI统计方法。表格式的BI统计通常采用交叉表格、分组表、报表等形式&#xff0c;对数据进行整合、分析和展示&#xff…

【数据库数据恢复】ndf文件损坏的SQL SERVER数据库数据恢复案例

数据库数据恢复环境&#xff1a; 某公司存储上部署SQL SERVER数据库&#xff0c;数据库中有1000多个文件&#xff0c;该SQL SERVER数据库每10天生成一个NDF文件&#xff0c;数据库包含两个LDF文件。 数据库故障&分析&#xff1a; 存储设备出现故障导致SQL SERVER数据库异常…

IDEA实用设置

1、设置全局编码统一为UTF-8 file>setting中搜索框输入file encoding修改格式为UTF-8 2、设置文字大小 file>setting中搜索框输入font修改字体大小 3、配置maven file>setting中搜索框输入maven修改maven的路径、conf文件、文件仓库 4、idea中实现Serializable提示…

RabbitMQ通讯方式

RabbitMQ通讯方式 RabbitMQ提供了很多中通讯方式&#xff0c;依然可以去官方查看&#xff1a;https://rabbitmq.com/getstarted.html 七种通讯方式 1 RabbitMQ提供的通讯方式 Hello World!&#xff1a;为了入门操作&#xff01;Work queues&#xff1a;一个队列被多个消费者…

三十五、垃圾回收器

一、GC分类于性能指标 垃圾回收器的分类 1.串行回收指的是在同一时间段内只允许有一个CPU用于执行垃圾回收操作&#xff0c;此时工作线程被暂停&#xff0c;直至垃圾收集工作结束。 1)在诸如单CPU处理器或者较小的应用内存等硬件平台不是特别优越的场合&#xff0c;串行回收器…

WRF模式应用:天气预报、模拟分析观测气温、降水、风场、水汽和湿度、土地利用变化、土壤及近地层能量水分通量、土壤、水体、植被等相关气象变量

查看原文>>>高精度气象模拟软件WRF(Weather Research Forecasting)技术及案例应用 目录 区域气候模式理论知识梳理 Linux操作系统WRF模式系统实际操作 模式调试及运行 模式操作及案例实践 实际应用及案例分析 Python在WRF模型自动化运行及前后处理中的实践技术…

为什么在马云成功前就有那么多影像留下来?

马云创业的各个阶段&#xff0c;都有意无意得到媒体的推波助澜&#xff0c;不光是影像&#xff0c;还留下了很多相关的文字报道。站在当时的角度&#xff0c;马云或许并不总是以一种成功人士的身份出现&#xff0c;但即便如此&#xff0c;他做事情也足够新潮、足够前卫、或者足…

Delphi 知识 彻底搞懂Delphi中的匿名方法

前言&#xff1a; 顾名思义&#xff0c;匿名方法是一个没有与之相关的名字的过程或函数。一个匿名方法将一个代码块视为一个实体&#xff0c;可以分配给一个变量或作为一个方法的参数使用。此外&#xff0c;匿名方法可以引用变量&#xff0c;并在定义该方法的上下文中为变量绑定…

Off-CPU分析

前言 性能问题可以分为两种类型&#xff1a; On-CPU&#xff1a;线程花时间在CPU上运行的地方&#xff1b; Off-CPU&#xff1a;在I/O&#xff0c;锁&#xff0c;计数器&#xff0c;分页/交换上阻塞等待的时间 Off-CPU的分析是一种性能分析的方法&#xff0c;用于测量和研究Off…

java懒加载实现

懒加载&#xff0c;也称为“不需要”加载&#xff0c;是一种内存管理方式。在 Java中&#xff0c;当一个类不再使用时&#xff0c;就会将其转化为另一个类对象。这也是所谓的“垃圾回收”。java中的懒加载有三种方式&#xff1a; 3、在对象被回收时&#xff0c;会将其销毁。 在…

DIY可视化必看教程 FLEX组件使用,教大家如何布局界面

DIY可视化必看教程FLEX组件使用 水平布局实现、两端对齐 1、拖个FLEX组件过来&#xff0c;排列方向改为水平。 2、拖个文件内容组件进去、栅格化到0 3、复制多一个文本内容组件 4、修改FLEX组件显示对齐方式 5、图标对齐 6、修改FLEX组件对齐方式 7、修改中间占位大&#xff0…

Windows 11 本地 php环境搭建:PHP + Apache + MySQL 安装和环境配置

目录 前言1. PHP 的下载、安装和配置1.1 下载 php1.2 安装 php1.3 配置 php 系统变量1.4 配置 php.ini 2. Apache 的下载、安装和配置2.1 下载 Apache2.2 安装 Apache2.3 修改配置 Apache2.4 指定服务端口&#xff08;非必须&#xff09;2.5 配置系统变量2.6 安装服务2.7 启动服…

计算机网络闲谈01——QUIC协议

计算机网络闲谈01——QUIC协议 预备知识 重传机制 RTT 一个连接的往返时间 RTO 重传超时时间 RTT和RTO 的关系是&#xff1a;由于网络波动的不确定性&#xff0c;每个RTT都是动态变化的&#xff0c;所以RTO也应随着RTT动态变化。 流量控制 对发送方发送速率的控制 称之为…

【BIM+GIS】BIM模型导入GIS软件之前的一些处理设置

文章目录 一、模型位置发生偏移二、模型对象丢失或增加三、模型材质发生变化四、导出过程缓慢五、模型属性批量丢失一、模型位置发生偏移 在视图→可见性/图形替换模型类别→场地(VV可见性快捷),勾选项目基点。 单击选中项目基点,在属性中修改几点坐标。 即使修改了项目基…

界面控件DevExpress Blazor UI v22.2 - 支持.NET 7

DevExpress拥有.NET开发需要的所有平台控件&#xff0c;包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具&#xff0c;该组件拥有众多新产品和数十个具有高影响力的功能&#xff0c;可为桌面、Web和移动应…

# Java 并发编程的艺术(二)

Java 并发编程的艺术&#xff08;二&#xff09; 文章目录 Java 并发编程的艺术&#xff08;二&#xff09;并发编程的挑战上下文切换如何减少上下文的切换 死锁资源限制的挑战 Java 并发机制的底层实现原理volatile 的应用synchronized 的实现原理与应用三大特性实现原理 Java…

智慧冷链园区三维可视化,数字孪生助力大数据实时监控

近年来&#xff0c;业界学者及企业就智慧冷链物流展开深入研究&#xff0c;2010 年 IBM 发布的《智慧的未来供应链》研究报告中提出智慧供应链概念&#xff0c;并由此延伸出智慧物流概念&#xff0c;即智慧物流是以信息化为依托并广泛应用物联网、人工智能、大数据、云计算等技…