C++继承与菱形继承(一文了解全部继承相关基础知识和面试点!)
目的减少重复代码冗余
Class 子类(派生类) : 继承方式 父类(基类)
继承方式共有三种:公共、保护、私有
父类的私有成员private无论哪种继承方式都不可以被子类使用
保护protected权限的内容在类内是可以访问,但是在类外访问不到
保护继承和私有继承的继承方式是并行的,父类的非私有方式全变为保护/私有
子类所占用的内存空间要计算上父类的成员:(private也会被继承下去,只是不可以访问)
上述代码输出是16,即打印子类的内存占用包括了ABCD四个成员的内容
关于 父类和子类的构造和析构顺序:
调用子类时:
父类构造函数 》》》》 子类构造函数 》》》》 子类析构函数 》》》》 父类析构函数
继承同名成员处理方式:
访问子类同名成员, 直接访问即可
访问父类同名成员, 需要加父类作用域
如果子类中出现和父类同名的成员函数,子类的同名成员会隐藏掉父类中所有同名成员函数,即使父类中存在独有的函数重载,也不能直接访问
如果想访问到父类中被隐藏的同名成员函数,需要加作用域
继承同名静态成员的处理方式:
与上述一致
访问子类同名成员, 直接访问即可
访问父类同名成员, 需要加父类作用域
与上面不同的是,静态成员不属于任一对象,除了可以通过对象访问还可以直接通过类名访问
总结: 同名静态成员处理方式和非静态处理方式一样,只不过有两种访问的方式 (通过对象 和 通过类名)
多继承语法:
允许一个类继承多个类,但是开发过程中不建议使用多继承
多继承可能会引发父类中有同名成员出现,需要加作用域区分
菱形继承:
两个派生类继承同一个基类,又有某个类同时继承者两个派生类
这种继承被称为菱形继承,或者钻石继承
父类
↙ ↘
子类1 子类2
↘ ↙
子类3
当子类1继承了父类的数据,子类2也继承了父类,当子类3使用数据时,会产生二义性
子类3继承来自父类的数据一共两次,但是实际一次就可以
当菱形继承,对于子类3 来说两个父类(子类1和子类2)拥有相同数据,需要加以作用域区分.但是数据两份资源浪费
解决方案:虚继承可以解决问题,在两个子类(子类1和子类2)继承前加上关键字virtual变为虚继承,父类成为虚基类
当发生虚继承时,共同的数据变成了一份,不会出现不明确的情况,其值按照程序运行顺序取最后的赋值,同时访问共同的数据可以不用在前面加作用域,
即原来:
子类3 zi3;
cout << zi3.子类1:: age<<endl;
cout <<zi3.子类2:: age <<endl;
现在用了虚继承:
cout << zi3.age <<endl; //直接访问即可
注意:需要在两个继承的子类(子类1和子类2)前面都要加上virtual关键字
其他继承:
当继承的父类是一个模板时,子类继承其必须要知道父类中的T类型
相关文章:
C++继承与菱形继承(一文了解全部继承相关基础知识和面试点!)
目的减少重复代码冗余 Class 子类(派生类) : 继承方式 父类(基类) 继承方式共有三种:公共、保护、私有 父类的私有成员private无论哪种继承方式都不可以被子类使用 保护protected权限的内容在类内是可以访问,但是在…...
谷歌DeepMind 德米斯·哈萨比斯 因蛋白质预测AI荣获诺贝尔化学奖
2024年诺贝尔化学奖的一半授予了谷歌DeepMind的联合创始人兼首席执行官德米斯哈萨比斯和公司总监约翰M朱姆珀,以表彰他们在利用人工智能预测蛋白质结构方面的研究成果。另一半奖项则授予华盛顿大学生物化学教授大卫贝克,以表彰他在计算蛋白质设计领域的贡…...
内网笔记大全
内网笔记大全 1、基础命令 Windows 1、net user #查看用户 2、net view #查看在线主机 3、systeminfo #查看操作系统的基本配置 4、ipconfig /all #详细显示当前网络配置信息和网卡信息 5、net localgroup #查看本地组信息 6、net localgroup administrators #查看管理员组 7、…...
peft.LoraConfig()参数说明
LoraConfig()介绍 LoraConfig()是peft库中的一个配置类,用于设置大模型微调方法LoRA(Low-Rank Adaptation)的相关参数。PEFT 库为各种参数高效的微调方法(如 LoRA)提供了封装,以减少微调大模型时的计算资源…...
串口(UART)的FPGA设计(接收与发送模块)
目录 串口基础知识 一、什么是串口?有哪些特点? 二、常见的串口通信协议有哪些?他们有什么区别?...
JSON 格式化工具:快速便捷地格式化和查看 JSON 数据
JSON 格式化工具:快速便捷地格式化和查看 JSON 数据 为什么需要 JSON 格式化工具? 在日常开发和调试中,JSON 是非常常见的数据交换格式。无论是前端与后端的接口调用,还是数据存储和处理,JSON 格式都扮演着重要角色。…...
【星汇极客】STM32 HAL库各种模块开发之1.8TFT屏幕
前言 本人是一名嵌入式学习者,在大学期间也参加了不少的竞赛并获奖,包括:江苏省电子设计竞赛省一、睿抗机器人国二、中国高校智能机器人国二、嵌入式设计竞赛国三、光电设计竞赛国三、节能减排竞赛国三等。 暑假的时候参加了太多的比赛&#…...
Excel中使用SQL语句的四种方法
总结在 Excel 中使用 SQL 语句的四种方法,各种方法都有各自的适用场景,可以选择自己熟悉的或喜欢方式。本文以在 Excel 中操作 MS SQL 数据库的数据为例进行说明。MS SQL 的数据如下,使用微软 SQLExpress 版本。 方法 1: Excel 现…...
目标检测中的损失函数
损失函数是用来衡量模型与数据的匹配程度的,也是模型权重更新的基础。计算损失产生模型权重的梯度,随后通过反向传播算法,模型权重得以更新进而更好地适应数据。一般情况下,目标损失函数包含两部分损失,一个是目标框分…...
list库实现
list库实现的要点: 构建list类时,需要同时构建struct Node来存储节点信息,list类中只存储哨兵位节点信息,迭代器类需要template<T,Ptr,Ref>来构建const和非const迭代器,迭代器中也是存储节点信息。反向迭代器也…...
MFC工控项目实例二十三模拟量输入设置界面
承接专栏《MFC工控项目实例二十二主界面计数背景颜色改变》 1、在SenSet.h文件中添加代码 #include "BtnST.h" #include "ShadeButtonST.h"/ // SenSet dialogclass SenSet : public CDialog { // Construction public:SenSet(CWnd* pParent NULL); //…...
排序算法总结(三)希尔排序
访问www.tomcoding.com网站,学习Oracle内部数据结构,详细文档说明,下载Oracle的exp/imp,DUL,logminer,ASM工具的源代码,学习高技术含量的内容。 如果你在网上搜一下希尔排序,都会告…...
如何迁移 Linux 服务器 第一部分 - 系统准备
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 在许多情况下,您可能需要将数据和操作需求从一个服务器迁移到另一个服务器。您可能需要在新的数据中心实施解决方案&a…...
网络IO模型都有哪些
“网络IO模型有BIO、NIO、AIO ” “他们分别代表什么,有什么区别吗? BIO:同步阻塞IO。 NIO:同步非阻塞IO。 AIO:异步非阻塞IO。 “BIO为什么是同步阻塞IO,他阻塞的是谁跟谁之间的关联?”。 首先…...
数据结构: 数组在算法中的应用
数组是计算机科学中的一种基础数据结构,它在算法中有着广泛的应用,其关键要素是索引与索引对应的值。 请注意,这些代码示例需要适当的辅助函数(如 swap )和主函数来运行。此外,一些算法(如KMP算…...
js快速转换时间(时间戳转换成年月日时分秒)
1:js转换 1728270833000 转换为 2024-10-07 11:13:53 var date new Date(1728270833000); // 参数需要毫秒数,所以这里将秒数乘于 1000 Y date.getFullYear() -; M (date.getMonth()1 < 10 ? 0(date.getMonth()1) : date.getMonth()1) -; D…...
LeetCode15.三数之和
题目链接:15. 三数之和 - 力扣(LeetCode) 1.常规解法(会超时) 由于这道题需要排除相同的三元组,则可以先将目标数组从小到大排序,再遍历数组找到每个符合条件的三元组,若结果中不包…...
SpringBoot3.3 优雅启停定时任务
定时任务是非常常见的功能,在一个复杂的应用程序中,如何优雅地管理这些定时任务的启动与停止尤为重要。 Spring Boot 提供了强大的任务调度支持,通过@Scheduled注解可以轻松地创建定时任务,并且可以通过配置来灵活地管理这些任务的执行环境。在本文中,我们将深入探讨如何…...
数据结构之二叉搜索树(key模型与key_value模型)
二叉搜索树(key模型与key_value模型) 1. ⼆叉搜索树的概念2. ⼆叉搜索树的性能分析3. ⼆叉搜索树的插⼊4. ⼆叉搜索树的查找5. ⼆叉搜索树的删除6. ⼆叉搜索树的实现代码7. ⼆叉搜索树key和key/value使⽤场景7.1 key搜索场景:7.2 key/value搜…...
图说几何学2300年重大错误:附着在直线z上的直线段必是z的一部分
黄小宁 用泡沫塑料和油漆制成的铅球与真正的铅球,两者有不同的内部形状。同样,数学有长度相同但内部形状不同的伪≌直线段。 几何学有史2300年来一直认定附着在直线z上的直线段一定是z的一部分。其实这是2300年肉眼直观错觉——百年病态集论的症结。 …...
汽车网关(GW)技术分析
一、引言 在现代汽车电子系统中,汽车网关(Gateway,简称 GW)扮演着至关重要的角色。随着汽车电子技术的不断发展,汽车内部的电子控制单元(Electronic Control Unit,简称 ECU)数量不断…...
Telnet命令详解:安装、用法及应用场景解析
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storm…...
C++之LIST模拟实现(代码纯享版)
目录 文章目录 前言 一、代码 总结 前言 本文主要展示了模拟List的代码实现 一、代码 #pragma once #include<iostream> #include<assert.h> using namespace std; namespace zlh {template<class T>struct list_node{T _data;list_node<T>* _next;l…...
华为OD机试 - 括号匹配 - 栈(Python/JS/C/C++ 2024 E卷 100分)
华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…...
打破欧美10年芯片垄断,杨振宁教授关门弟子,仅用三年创造奇迹
有这么一位超级厉害的中国人,硬是把欧美那边垄断了十年的芯片技术给“撬”开了!说起来,这才是我们该追的真正明星啊!那么,这位大神到底是谁?又是怎么让欧美芯片圈儿里的人听到她的名字就心里发怵的呢&#…...
OpenCV视频I/O(20)视频写入类VideoWriter之用于将图像帧写入视频文件函数write()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::VideoWriter::write() 函数用于将图像帧写入视频文件。 该函数/方法将指定的图像写入视频文件。图像的大小必须与打开视频编写器时指定的大…...
音视频入门基础:FLV专题(14)——FFmpeg源码中,解码Script Tag的实现
一、引言 在《音视频入门基础:FLV专题(9)——Script Tag简介》中对Script Tag进行了简介,本文讲述FFmpeg源码中是怎样解码FLV文件的Script Tag,拿到里面的信息。 二、flv_read_packet函数 从《音视频入门基础&#x…...
小猿口算APP脚本(协议版)
小猿口算是一款专注于数学学习的教育应用,主要面向小学阶段的学生。它提供多种数学练习和测试,包括口算、速算、应用题等。通过智能化的题目生成和实时批改功能,帮助学生提高数学计算能力。此外,它还提供详细的学习报告和分析,帮助家长和教师了解学生的学习进度和薄弱环节…...
【长文梳理webserver核心】核心类篇
前言 有三个核心组件支撑一个reactor实现 [持续] 的 [监听] 一组fd,并根据每个fd上发生的事件 [调用] 相应的处理函数。这三个组件就是 EventLoop 、Channel 以及 Poller 三个类,其中 EventLoop 可以看作是对业务线程的封装,而 Channel 可以看…...
[实用工具]Docker安装nextcloud实现私有云服务和onlyoffice
Nextcloud是一款开源的云存储和协作平台,允许用户在自己的服务器上存储和访问文件,同时提供强大的协作工具。它可以替代商业云存储服务,让用户拥有完全控制和自主管理自己的数据。 Nextcloud支持文件上传和下载,可以通过Web界面、…...
北京网站建设公司华网天下官网/石家庄网站建设方案推广
ls命令的含义是list显示当前目录中的文件名字。注意不加参数它显示除隐藏文件外的所有文件及目录的名字。 1)ls –a显示当前目录中的所有文件,包含隐藏文件 ]# ls –a ..gnome2.nautilus ...gnome2_privateoracle_rpm .bash_profile.gtkrc-1.2-gnome2tns…...
excel做网站数据库/百度信息流推广教程
目录 监听器三要素: 第一个监听器范例: 监听器,采用注解的形式: 监听器三要素: (1)想让一个类变成监听器,而且想让这个监听什么对象,就让这个类实现不同的对应的接口…...
郴州网站建设/网站seo诊断工具
卷积是一种线性运算,图像处理中常见的mask运算都是卷积,广泛应用于图像滤波。castlman的书对卷积讲得很详细。高斯变换就是用高斯函数对图像进行卷积。高斯算子可以直接从离散高斯函数得到:for(i0; i<N; i){for(j0; j<N; j){g[i*Nj]exp(-((i-(N-1)…...
wordpress无发上传图片/百度搜索浏览器
2019独角兽企业重金招聘Python工程师标准>>> Prometheus 是一个非常优秀的监控工具。准确的说,应该是监控方案。Prometheus 提供了监控数据搜集、存储、处理、可视化和告警一套完整的解决方案。 让我们先来看看 Prometheus 的架构。 架构 Prometheus 架构…...
网站中如何嵌入支付宝/朋友圈推广平台
我们试试确认sudoers位置 普通用户用find查找很难找,因为有很多需要root权限才能看的文件都会deny, 干扰搜索效果 切换会root再查 [sandwich192 ~]$ su Password: [root192 sandwich]# find / -name sudoers find: ‘/run/user/1000/gvfs’: Permission denied /…...
地产flash网站/做网站怎么赚钱
文章目录1.函数原型1.1 函数参数说明1.2 返回值2.相关数据结构与函数2.1 struct timeval2.2 fd_set3.编程模型4.关于select的阻塞4 select总结5. Unix5中IO模型5.1阻塞I/O模型5.2 非阻塞I/O模型5.3 I/O复用模型5.4 信号驱动I/O模型5.5 异步I/O模型5.6 几种I/O模型的比较5.7 同步…...