2.7C++基类和派生类转换

news2024/11/17 13:49:14

C++ 基类和派生类转换

C++中基类与派生类之间的转换有两种方式:

1、向上转换

向上转换是将派生类的指针或引用转换为基类的指针或引用。

向上转换是安全的,因为基类是派生类的公共部分,可以保证派生类对象的所有成员都可以被基类指针或引用访问。

向上转换可以通过隐式转换或显式转换实现。

我简单写个 demo:
在这里插入图片描述
在上述我写的 demo 中,Animal 是基类, Cat 是派生类,通过将 Cat 对象的指针转换为 Animal 对象的指针,可以访问 Animal 类的成员函数。

由于 Cat 类重写了 Animal 类的 eat() 函数,因此调用 eat() 函数时会调用 Cat 类的 eat() 函数。

需要注意的是,向上转型只能访问基类的成员函数,无法访问派生类的成员函数。

编译运行结果:
在这里插入图片描述
2、向下转换

向下转换是将基类的指针或引用转换为派生类的指针或引用。

向下转换需要注意类型的匹配问题,如果基类指针或引用指向的是派生类对象,则可以进行向下转型,否则会出现类型不匹配的错误。

向下转换可以通过动态类型转换实现。

我简单写个 demo:
在这里插入图片描述
在上述我写的demo 中,基类指针 b 指向派生类对象,使用 dynamic_cast 运算符将其转换为派生类指针 d。

如果转换成功,即 d 不为空指针,就可以安全地访问派生类的成员函数。

否则转换失败,可以进行相应的错误处理。

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

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

相关文章

Windows11 anaconda配置pytorch环境

生成 .condarc 文件,位于C:\Users\Admin\ conda config --set show_channel_urls yes 记事本打开 .condarc 文件,添加以下内容: channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ - https://mirrors.tuna.tsingh…

北上广深共享办公室市场概览

在北上广深这四个城市,共享办公室已经成为一种日益流行的办公模式。随着经济的快速发展和科技创新的不断推进,越来越多的企业开始青睐共享办公室,以适应灵活办公和协作办公的需求。那么,2023年共享办公室市场的前景如何呢&#xf…

头条搜索精选 参数分析

本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!头条搜索精选 参数分析 环境 win10Python3.9Chrome抓包接口分析 主要是需要这一块的内容 通过抓包分析发…

一、机器学习概述

一、机器学习概述1.机器学习初步认识2.机器学习类型1)监督学习a.分类b.回归 2)无监督学习a.聚类b.降维 3.机器学习方法1)模型2)损失函数3)优化算法4)模型评估指标 4.开发流程 一、机器学习概述 1.机器学习初…

Openlayers图文版实战,vue项目从0到1做基础配置

Openlayers的实战教程 分为**图文版** 和 **视频版**, 这里的是图文版,包含基础知识介绍和*实战的源代码*,示例效果以gif动图的形式展现出来。 **视频版** 正在录制中,很快会上线,敬请期待~, 如有问题&am…

Java如何实现手动连接数据库(Mysql或Oracle) | 超级详细,建议收藏

👨‍🎓作者:bug菌 ✏️博客: CSDN、 掘金、 infoQ、 51CTO等 🎉简介:CSDN博客专家,C站历届博客之星Top50,掘金/InfoQ/51CTO等社区优质创作者,全网粉丝合计10w&#xff0c…

ant design vue 配置菜单外部打开

实现如下 菜单配置 前端项目地址:http://localhost:3000 菜单路径:dataCenter/HealthData 打开方式:外部 在项目中src-->config-->router.config.js文件 将需要再外部打开的菜单地址进行如下配置 菜单地址:/dataCenter/Hea…

软件测试面试题(完整版)

1、B/S架构和C/S架构区别 B/S 只需要有操作系统和浏览器就行,可以实现跨平台,客户端零维护,维护成本低,但是个性化能力低,响应速度较慢 C/S响应速度快,安全性强,一般应用于局域网中&#xff0c…

力姆泰克LBP滚珠丝杠电动推杆

LBP滚珠丝杠电动推杆 内含长寿命润滑脂,免维护 向下翻动查看更多 力姆泰克电动推杆 高强度/高耐磨材料选择,高精度的零部件加工,先进的壳体设计理念,造就高承载能力,抗冲击,低噪音,长寿命的优…

【AUTOSAR】BMS开发实际项目讲解(八)----BMS热管理冷却功能

热管理参数 项目 模式 BEV 进入条件(℃) 退出条件(℃) 目标水温(℃) 目标流速(L/min) 冷却 一级冷却 行车 T1_in35 T1_out28 20 20 快充 T1_in30 T1_out…

Vue3 刨析响应式 ref 原理

目标 了解 Vue ,手写一个方法,实现响应式,并读懂响应式 源码 class MyRef {constructor(value) {this._value value}// 访问器get value() {console.log(触发 getter 函数 访问);return this._value}// 读取器set value(newVal) {console.l…

微电网数字化系统硬件设备在储能行业中的应用

安科瑞虞佳豪 1如果说火爆的储能行业堪比新能源赛道上的皇冠,那么工商业储能就是皇冠上的明珠。 提及储能,人们习惯更多地关注源网侧储能电站(大储)身上,探讨发电侧配储、利用率、共享储能模式等话题,但其…

不一般!R型变压器直流电阻和绝缘电阻背后的秘密原来是这样!

一般来说,除了技术人员之外,我们可能不太清楚变压器的一些内部电阻,比如什么是R型变压器的直流电阻?事实上,这些都是变压器参数中的一些重要信息,通常与变压器的质量和使用有关。让我们和小r一起来看看什么…

AR项目问题汇总

1、unity使用URP 导致ARFoundation黑屏 (16条消息) unity使用URP 导致ARFoundation黑屏_arfoundation运行iphone黑屏_weixin_46813963的博客-CSDN博客https://blog.csdn.net/weixin_46813963/article/details/117509322Configuring the AR Camera background using a Scriptab…

Android Studio中App Inspection 或Profiler里网络请求数据显示中文乱码解决办法

如题,在Android开发时经常需要网络请求分析,但是Response 里面的中文经常乱码,用如下办法可解决 效果如下: 解决办法 Android studio在 Help中找到Edit Custom VM Options… 并打开文件,在文件中添加 -Dfile.encod…

记录一次 vite 配置别名路径 打包时出错的bug

vite多页应用,由于在vite.config.ts中define中配置的常量pages,而路径别名也有pages,所有导致打包时替换路径出错,将pages常量注释掉就好了 export default defineConfig({root: getRoot(), // 项目根路径base: "/", // 公共基础路径envDir: resolve(__dirname), /…

SpringBoot03:yaml配置注入

目录 一、yaml语法学习 1、配置文件 2、yaml概述 3、yaml基础语法 3.1、字面量:普通的值【数字、布尔值、字符串】 3.2、对象、Map(键值对) 3.3、行内写法: 3.4、数组(list、set) 二、注入配置文件 1、yaml注入配置文件…

selenium\webdriver\remote\errorhandler.py:242: SessionNotCreatedException问题解决

报错信息: raise exception_class(message, screen, stacktrace) E selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 112 E Current browser versi…

超强,Pytest自动化测试框架 fixture 传参实战(案例)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 为了提高复用性&a…

企业邮箱如何设置分级管理员

给邮局设置成员后,有的时候会分为多个分组,那么就需要设置分级管理员,分级管理员可以管理所属部门或群组的成员,为企业邮局的管理提供了更多的便利。设置方法如下: 例:我们要将销售分公司的高阳&#xff0…