当前位置: 首页 > news >正文

C++中的多重继承和虚继承:横向继承、纵向继承和联合继承;虚继承

多重继承

A.横向多重继承:

在这里插入图片描述

B.纵向多重继承:

在这里插入图片描述

C.联合多重继承:

在这里插入图片描述

因为 single 和 waiter 都继承了一个 worker 组件,因此 SingingWaiter 将包含两个 worker 组件,那么将派生类对象的地址赋给基类指针将出现二义性

那么如何解决二义性问题呢?我们知道程序的执行一定是具有确定性的,在上述情况下,我们能想到的是进行强制转换,如下所示:
在这里插入图片描述
很显然,上述这种强制转换确实能够解决因联合继承带来的二义性问题,但是每次都进行这样的强制转换过于繁琐,那么有没有简单的办法解决二义性问题呢?答案就是:虚继承,所谓的虚继承,就是让共享一个祖父类

虚继承

A.What(什么是虚继承、虚基类)

  • 虚继承:

class Derived: public virtual Base, 如下例所示,展示了虚继承的形式

在这里插入图片描述

  • 虚基类

被声明为虚继承的基类被称为虚基类

B.Why(虚继承的作用)

  • 解决二义性冲突:当基类的指针指向孙子类的指针或引用时,会出现二义性,因为 孙子类对象包含多个祖父类对象,而虚继承只保留一个共享的祖父类
  • 减少内存消耗:因为孙子类只包含一个祖父类对象
  • 减少代码冗余:虚基类的成员只需在最终的派生类中定义一次

C.How

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 后端工作之一:CrapApi —— API接口管理系统部署
  • 【服务器】在Linux查看运行的Python程序,并找到特定的Python程序
  • HW期间——应急响应
  • 什么是边缘计算?创造一个更快、更智慧、更互联的世界
  • Selenium 等待
  • 图像类别生成数字标签
  • C++基础篇(1)
  • 在ROS (Robot Operating System) 中,查看话题(topics)
  • 从0构建一款appium-inspector工具
  • aop的几种动态代理以及简单案例(1)
  • nginx配置ssl证书
  • JavaWeb__正则表达式
  • 27. 738.单调递增的数字,968.监控二叉树,贪心算法总结
  • 访问控制列表
  • linux 常用和不那么常用命令记录02 磁盘占用
  • JS 中的深拷贝与浅拷贝
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • Akka系列(七):Actor持久化之Akka persistence
  • go append函数以及写入
  • js递归,无限分级树形折叠菜单
  • Python进阶细节
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Swoft 源码剖析 - 代码自动更新机制
  • Vue2.0 实现互斥
  • 实现简单的正则表达式引擎
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 王永庆:技术创新改变教育未来
  • 栈实现走出迷宫(C++)
  • 湖北分布式智能数据采集方法有哪些?
  • ​Linux·i2c驱动架构​
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • (1)无线电失控保护(二)
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (二)hibernate配置管理
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (循环依赖问题)学习spring的第九天
  • (游戏设计草稿) 《外卖员模拟器》 (3D 科幻 角色扮演 开放世界 AI VR)
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)Mysql的优化设置
  • .apk文件,IIS不支持下载解决
  • .NET CORE Aws S3 使用
  • .NET Core 中插件式开发实现
  • .Net 知识杂记
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  • .NET业务框架的构建
  • .net中应用SQL缓存(实例使用)
  • @DependsOn:解析 Spring 中的依赖关系之艺术