C++基础(7)——类和对象(继承)

news2024/10/7 6:39:56

前言

本文主要介绍C++中的继承

4.6.1:继承和继承方式(公有、保护、私有)

4.6.2:继承中的对象模型,sizeof()求子类对象大小

4.6.3:子类继承父类后,两者构造和析构顺序

父类先构造、子类先析构

 如果是简单的一个类包含另一个类的对象

4.6.4:继承同名处理办法

当子类中有成员属性和父类中的成员属性同名时,可以添加作用域分别访问到子类和父类中的成员属性

有相同名字的成员函数也是一样的操作

注意:当子类中有和父类相同的函数名,那么父类中该函数和其重载的函数都不能通过子类对象直接进行访问,如果想访问就要向上面一样加作用域

4.6.5:多继承语法

前提:Son子类继承Dad类和Mon类,其中Dad类和Mon类就名字,构造、析构打印相关打印的内容不同

子类继承多个父类,执行构造函数的顺序按照继承顺序;当父类中出现了同名的成员属性或函数时,要加父类的作用域去加以区分

改变一下继承的顺序

4.6.6:菱形继承(钻石继承、虚继承)

基本概念:两个子类A、B继承同一个父类C,然后一个类D同时继承类A和类B

会出现的问题

1:数据二义性,类D会从类A和类B中继承名字相同的属性或方法

2:有些数据只需继承一份即可,不需要继承两份

通过GrandSon创建一个对象,每个类中的数据都会继承一份,没有必要(8+8+4)

使用虚继承(virtual关键字)来实现数据一份,继承的是指针,一个指针占8字节。主要是继承了vbptr指向虚基类表,在虚基类表中有偏移

 使用虚继承后的代码,打印了一些地址和类的大小

总结

以上就是本文的全部内容,非常感谢你能看到这

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

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

相关文章

在vue3中使用pinia完整流程图文

1.准备 使用vite创建好一个vue3项目,开发语言选择ts使用 npm i pinia -s 安装最新版本的pinia 这里我的版本安装的是 2.1.4 2.注册pinia 1.在main中注册pinia import { createApp, createApp } from "vue"; import "./style.css"; import App…

Contrastive Representation Learning 对比表征学习(三)视觉:图像嵌入(1)

原文翻译自这里 视觉:图像嵌入(Image Embedding) 图像增强 在视觉领域,大多数面向对比表征学习的方案均依赖于通过应用数据增强技术的序列组合来创建样本的噪声形式。而这种增强需要满足保持语义不变的同时极大的改变其视觉外观…

既有内销又有外贸,多样性外贸业务管理解决方案

随着外贸数字化贸易全球化的深入发展,出口、进口、内销业务越来越受到关注。外贸业务是企业在海外市场进行商品贸易,而内销业务是企业在国内市场进行商品贸易。在管理这种业务时,想要实现降本增效,企业需要有一套成熟的管理解决方…

Redis什么是缓存穿透、击穿、雪崩?如何解决

缓存与后端系统 通常后端会采用Mysql等磁盘数据库,可以持久化但是访问慢,高并发时性能差,需要设置Nosql内存型数据库缓存:Redis等 但缓存可能出现:缓存穿透、缓存击穿、缓存雪崩等问题 认识缓存穿透、击穿、雪崩 热点…

Vue2:怎么实现响应式双向绑定?

一、vue2怎么实现双向绑定原理 在Vue2中,双向绑定的实现是通过Vue2的响应式系统和数据绑定机制来完成的。下面是Vue2实现双向绑定的简要原理: 数据劫持:当创建Vue实例时,Vue2会对data选项中的所有属性进行数据劫持。这通过使用Ob…

【单元测试】Junit 4教程(一)--白盒测试方法

目录 1.0 流程图标识 1.1 语句覆盖法(C0标准) 1.2 判定/分支覆盖法(C1标准) 1.3 条件覆盖法(C2标准) 1.4 判定条件覆盖法(C1C2标准) 1.5 条件组合覆盖法(C3标准&am…

【ESP8266】基础AT指令和常用WIF指令

【ESP8266 (12F)】硬件参数 以及 固件烧录 文章目录 一、常用AT命令1.1 基础1.2 WiFi相关1.21 ATCWMODE:查询/设置 Wi-Fi 模式 (Station/SoftAP/StationSoftAP)1.22 ATCWJAP:连接 AP1.23 ATCWLAP:扫描当前可用的 AP1.2…

容器JVM内存配置最佳实践

背景信息 当您的业务是使用Java开发,且设置的JVM堆空间过小时,程序会出现系统内存不足OOM(Out of Memory)的问题。事件中心的OOM事件是指系统内存不足时,触发了Linux的内存回收(OOM Killer)机制…

7D性能工程初级班第一期开班了!

Slogan:领略性能艺术的壮阔、感受性能测试的博大精深 课程大纲见:【7D-RESAR 性能工程初级班大纲】 报名流程 讲师介绍 高楼老师: 性能领域公认的具有匠心的技术专家。架构级性能解决方案资深专家。性能测试调优分析18年经验,…

Java中的实体类为什么要 implements Serializable?

1. 序列化和反序列化 首先来解释一下什么是序列化和反序列化: 序列化:把对象转换为字节序列的过程称为对象的序列化。 反序列化:把字节序列恢复为对象的过程称为对象的反序列化。 在 Java 和其他语言进行通信的时候,需要将对象…

安卓手机ROOT和刷机基本操作——以红米Note7刷安卓原生系统并Root为例

文章目录 前言一.简介1. 安卓权限2. 安卓分区Boot分区System分区Data分区Cache分区Recovery分区 3. Fastboot 二.前置准备1. Android SDK 工具2. 解BL锁 三. ROOT1.Fastboot线刷(推荐)获取系统boot镜像修补boot.img刷入boot 2. Recovery卡刷(可以尝试) 四. 红米Note7刷安卓原生…

Burpsuite介绍及2022.8.2版本超详细安装教程(图文版)

Burpsuite介绍及2022.8.2版本超详细安装教程(图文版) 文章目录 Burpsuite介绍及2022.8.2版本超详细安装教程(图文版)Burpsuite是什么?Burpsuite环境配置及安装JDK选择及配置Burpsuite下载安装 Burpsuite快捷启动方式选…

卷积神经网络中池化层的详细介绍

卷积神经网络自2012年,到2023年经历了翻天覆地的变化。最早的卷积神经网络由卷积层、池化层和全连接层所构成。其中卷积层用于提取图像的特征,池化层削减特征数量,全连接层用于对特征进行非线性组合并预测类别。然而在transformer横行的年代&…

【瑞吉外卖】适合速成SpringBoot和MyBatis的作业项目

文章目录 零、MyBatisPlus一、管理端登录1.0 统一的返回结果Result类1.1 admin/login1.2 admin/logout1.3 Filter1.4 自定义消息转换器 二、员工管理2.1 新增员工-字段填充2.2 全局异常捕获2.3 员工信息分页查询 三、分类管理3.1 分类的删除 四、菜品管理4.1 文件的上传与下载1…

CNAPPs投资热度持续攀升 腾讯云被Gartner评为全球案例厂商

近日,Gartner发布《新兴技术:在三重挤压中蓬勃发展—对云安全风险投资的关键洞察》(Emerging Tech: Thriving Amid the Triple Squeeze— Critical Insights on VC Funding for Cloud Security)(以下简称《报告》&…

Flink 学习五 Flink 时间语义

Flink 学习五 Flink 时间语义 1.时间语义 在流式计算中.时间是一个影响计算结果非常重要的因素! (窗口函数,定时器等) Flink 可以根据不同的时间概念处理数据。 处理时间: process time System.currentTimeMillis()是指执行相应操作的机器系统时间(也称为纪元时间…

优化|如何减小噪声和误差对梯度下降法的影响

编者按: ​ 许多精确算法在理论上能保证我们的目标函数值一直下降。在随机梯度下降以及无导数优化等情况下,目标移动方向受到噪声干扰,与实际下降方向往往会存在偏差。本文将分析噪声和下降偏差对于梯度下降法等算法的影响,并且介…

SpringMVC08:拦截器+文件下载

目录 一、概述 二、自定义拦截器 1、新建一个Moudule,SpringMVC-07-Interceptor,添加web支持; 2、配置web.xml和springmvc-servlet.xml文件 3、编写一个拦截器 4、在springmvc的配置文件中配置拦截器 5、编写一个Controller&#xff0…

【数据库】Mysq备份与恢复

文章目录 一、数据库备份的分类1. 数据备份的重要性2. 数据库备份的分类3. 常见的备份方法 二、Mysql 完全备份与恢复1. Mysql 完全备份2. 数据库完全备份分类2.1 物理冷备份及恢复2.2 mysqldump 备份数据库完全备份一个或多个完整的库(包括其中所有的表&#xff09…

基于YOLOv5实现安全帽检测识别

目录 1、作者介绍2、YOLOv5网络模型2.1 算法简介2.2 数据集介绍2.2.1 VOC数据集准备2.2.2 YOLOv5算法检测流程 3、代码实现3.1 数据集划分部分代码3.2 训练阶段3.3 测试阶段3.4 检测结果 4、问题与分析参考链接 1、作者介绍 陈梦丹,女,西安工程大学电子…