C++多态学习笔记

CANOCO5.0实现冗余分析(RDA)最详细步骤 在地理及生态领域会常使用RDA分析,RDA的实现路径也有很多,今天介绍一下CANOCO软件的实现方法。1.不同样点和环境因子之间夹角是锐角 是正相关,是钝角是负相关。2.夹角越大 说明相关性较小,夹角越小,相关性越大。得有不同的物种或者样点数值,再加上环境因子数据。3.箭头越长 相关性越大。时间调整到2010年。 阅读详情

【C++面向对象之继承、多态与虚函数-哔哩哔哩】 https://b23.tv/ZK46C3L

虚函数用来实现多态

 如图所示,dog和cat均继承自animal类。我们希望每个子类型都有work这样的函数,于是我们就在父类中写一个虚函数。这个虚函数也可以有一个默认实现,比如说

 此时如果说我们在实例化一个dog子类和cat子类,我们去调用它的work方法的时候,它调用的都是这个animal的work方法。

如果说我们要在子类当中重写父类的某一个方法,我们就需要在类的声明当中写出和父类一样的方法签名,然后在后面写上override关键词

之后呢,我们再去完成这个函数的实现,由此就可以完成这个方法的重写,如图所示

 这个时候如果说我们实例化一个dog子类,然后去调用它的work函数,那么它就会输出这个dog。在更复杂的例子当中,比如说这个let it work函数,按理来说,这个函数只知道传进去的是一个animal类型,它应当去调用这个基类的一个work函数,但是我们看到它可以根据传进去的这个类型来灵活的调用当前类型的函数,可见完成了多态

 去掉override试试

 此时我们去掉了这个虚函数的声明和所有的这个override重写,此时我们会发现它已经没有刚才的多态的效果,这是最终返回的结果来看,均是调用了animal的函数

什么原理?

 编译器在实现的时候,类似于在实例化的对象的结构体内放置了一个针对于虚函数的指针也就是虚函数表vfptr

 我们可以实验一下,这时候我们把所有虚函数的这个关键字全都给取掉,然后我们给定义一个这个成员变量a之后,我们用size of操作符来看一下大小

果然,正如我们所料程序返回了四,也就是这个成员变量占据的空间大小

此时我们把这个virtual函数给它加上去,这个时候继续运行相同的程序,我们发现它返回了16,也就是说它为这个函数指针给增加了一个内存空间

构造函数和析构函数

        如图所示,我们在此搭建了两个类,分别为其添加了构造函数和析构函数,在子类的参数初始化列表当中,我们调用父类的构造函数,以正确的初始化父类的缓冲区。在析构函数当中,我们去释放变量。

此时,为了检验析构函数是如何调用的,我们在析构函数当中可以增加一些这个print,之后呢,我们创建一个类型为child,的一个变量,然后我们试试再去使用delete操作符释放它分配的空间,看到操作台的打印,结果我们发现在析构的过程当中C加加优先调用了子类的析构函数,之后调用父类的析构函数

 此时,我们在创建一个子类二,然后使用工厂函数来去创建不同类型的子类,并且去销毁它

此时,我们使用工厂函数来创建一个类型为child one,的一个子类,再用销毁函数来去析构它的内存,此时我们发现了问题,最终只调用了父类的这个析构函数。

我们给这个父类的析构函数,加上virtual虚函数标识,再做一次实验,此时我们发现依次调用了子类和父类的析构函数,综上可知,在做类的继承的时候,父类的析构函数需要标记为虚函数

实际上来说,非final类的析构函数需要标记为这个虚函数

如果说你的这一个类,他没有任何的这个子类,并且你懒得再去加virtual来标记,那么你可以将这个类标记为final类来确保它的析构函数,不会被任何继承它的子类进行一个覆盖

 

 

 

 

行业变革下的功能安全落地痛点3:高阶智驾安全责任转移 —— 从 “人为中心” 到 “机器主责” 的产业阵痛 文章围绕高阶智驾(L3 级)落地挑战,探讨安全责任从 “人控” 向 “机控” 转移的本质、技术短板导致的责任模糊、全球法规实践及技术 - 法规 - 保险的破局路径。 阅读详情

相关推荐

Win11下Wezterm配置Powershell默认终端全攻略(含主题同步技巧)

本文详细介绍了在Windows 11系统中,如何安装和配置Wezterm终端模拟器,并将其设置为PowerShell的默认终端。内容涵盖使用Winget或手动安装Wezterm,通过修改.lua配置文件切换默认Shell,并同步Campbell主题配色以还原熟悉的PowerShell视觉体验,旨在帮助开发者打造高效、个性化的命令行工作环境。

weixin_28363123的博客 1199

C++学习笔记(十九)——类之多态

多态(Polymorphism)是面向对象编程(OOP)的核心特性之一,它允许同一接口表现出不同的行为。 多态可以分为: 1. 编译时多态(静态多态): 通过函数重载和运算符重载实现(在编译阶段确定调用哪个函数)。 2. 运行时多态(动态多态):通过虚函数(virtual)和基类指针/引用实现(在运行时确定调用哪个函数)。

weixin_45857378的博客 1024

PLC作为Modbus TCP客户端

PLC作为Modbus TCP客户端,Modbus Slave作为服务器

soledad_chao的博客 4377

C++学习笔记——继承与多态(二):多态的原理

C++学习笔记——继承与多态(二):多态的原理

weixin_42923076的博客 202

免费大容量国外网盘测评:冷数据归档与rclone加密接入

云存储的本质,是通过对象存储、冗余编码和分层缓存,把本地磁盘容量问题转化为网络访问与数据管理问题。免费大容量国外网盘常以空间换用户规模或付费转化,容量政策、传输策略、协议支持和退出成本,往往比标称容量更决定长期可用性。支持 WebDAV、S3 兼容和命令行工具的服务,可接入 rclone 等自动化流程,再配合客户端加密与冷热分层,用于冷数据归档、老项目备份和家庭影像保存。理解带宽换算、单文件上限、保活机制与传输一致性后,评估话题型大容量网盘与专业向协议网盘,就能把免费空间纳入可靠存储层。围绕免费大容量国外网

weixin_31292729的博客 210

win10下面安装MTK USB VCOM 驱动

win10下面安装MTK USB VCOM 驱动1.概述2.驱动准备3.主要步骤3.1禁用win10对没有签名驱动限制3.2通过设备管理器安装mtk usb vcom驱动3.3工具版本问题4.禁用win10对没有签名的驱动限制4.1在设置中打开 更新和安全4.2进入恢复4.3在高级启动中点击立即重新启动4.4电脑重启后的几个动作5.通过设备管理器安装MTK USB VCOM 驱动5.1准备驱动5....

qimi123456的专栏 3万+

C++学习笔记——继承与多态(一):多态的实现

C++学习笔记——继承与多态(一):多态的实现 明天预告:多态的原理

weixin_42923076的博客 223

软考备考:《系统规划与管理师教程》(第2版)第2章——数字ZG与数智化发展

🔴数字化转型的定义:数字化转型是建立在数字化转换、数字化升级基础上,进一步触及组织核心业务,以新建一种业务模式为目标的高层次转型。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 959

cpp学习笔记:多态

cpp学习

ohhjack的博客 968

vue3:实现ECharts3D地图详细示例,echarts实现3D地图map3D,vue3如何利用echarts绘制3d地图立体城市省市地区分布,可视化数据大屏3D炫酷中国地图(复制源码,开箱即用)

echarts实现中国地图记录篇之3D地图,Echarts地图之——如何让地图显示出3d感,【3d地图】vue中使用echarts geo3D,echarts实现某个市3D地图展示,vue3中使用echarts实现中国地图,3D地图图表,echarts实现3D地图——map3D,数据大屏3d地图,vue3+echarts绘制中国地图,3D地图,省、市、县,【3d地图】vue3中使用echarts geo3D,echarts实现某个市3D地图展示,ECharts3D地图(详细示例——附有具体注释),echar

✅ 精选推荐文章 3669

AI大模型:(三)3.2 Spring AI实现Agent

SpringAI实现了流式对话功能,通过与Ollama模型集成完成前后端交互,当前版本存在thinking信息丢失问题。系统支持两种工具注册方式(方法注解和函数式),并内置时间工具类展示外部工具调用能力。记忆功能提供多种存储方案(内存、JDBC、NoSQL等),实现跨对话轮次的上下文保持。MCP协议集成方面,服务端实现计算和业务查询工具,客户端支持12306及自定义业务系统接入。完整演示了流式对话、工具调用与记忆功能的综合应用。该实践构建了具备复杂交互能力的AI系统,同时指出生产环境需关注的安全与优化问题。

haylee的专栏 1007

C++学习笔记之多态性

摘要: 本文系统介绍了C++中的多态性,包括静态多态(函数重载、运算符重载)和动态多态(虚函数机制)。动态多态通过虚函数实现,允许基类指针调用派生类的同名函数,核心内容包括:虚函数的作用、静态/动态关联的区别、虚析构函数的必要性,以及纯虚函数与抽象类的定义与应用。通过几何图形(点、圆、圆柱体)的类层次案例,演示了多态的实现方式,强调抽象类通过纯虚函数强制派生类实现统一接口,支持运行时多态。综合实例展示了如何利用抽象类指针管理不同派生类对象,体现“一个接口,多种行为”的面向对象设计思想。

ShangguanLuli的博客 861

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

C++学习笔记——多态

文章目录虚函数多态多态的表现形式一——基类指针多态的表现形式二——基类引用多态的作用多态实例:魔法门之英雄无敌非多态的实现方法多态的实现方法多态实例:几何形体程序 虚函数 在类的定义中,前面有virtual关键字的成员函数就是虚函数。 class base{ virtual int get(); }; int base::get() {} virtual关键字只用在类定义里的函数声明中,写函数体时不用。 构造函数和静态成员函数不能是虚函数。 虚函数可以参与多态,普通成员函数不能。 多态 多态的表现形式一

anRanKong的博客 357

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C++之多态学习笔记

文章目录 一、多态是什么? 二、多态相关知识 1.多态种类 2.种类的区别 三、编程例题讲解——动物多态 四、总结 前言 提示:这里可以添加本文要记录的大概内容: 其实关于C++也没有学习太多的东西,也不是什么大神,就是想通过写博客来做一下关于C++学习的笔记和大家分享自己在学习C++的时候一些理解,监督一下自己和大家,共同进步。 提示:以下是本篇文章正文内容,下面案例可供参考 一、多态是什么? 多态是类的三大类:封装、继承、多态中的一类,多态多态,顾...

weixin_63816825的博客 399

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

C++多态 学习笔记

C++ 多态 学习地址:https://www.runoob.com/cplusplus/cpp-polymorphism.html 在线编辑器:https://www.runoob.com/try/runcode.php?filename=helloworld&type=cpp 多态的意义是使用同一个基类,派生多个子类,子类之间名称可以相同,甚至输入值相同.这样会减少开发代码的冗余. 多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。 C++ 多态意味着

qq_42244167的博客 363

c++学习笔记:多态

1.多态:通常是指对于同一个消息、同一种调用,在不同的场合,不同的情况下,执行不同的行为--->重载便是简单的多态 ------->指同一个操作作用于不同的对象就会产生不同的响应; 多态性分为静态多态性和动态多态性   其中函数重载和运算符重载属于静态多态性, 虚函数属于动态多态性---->C++是依靠虚函数来实现动态多态的。 2.C++编译器根据传递给函数的参...

aorongxiang0833的博客 255

C++学习笔记 多态

C++学习笔记 多态(华清远见)

qq_50894278的博客 684

C++多态学习笔记(黑马)

C++多态学习笔记多态1 基本概念 多态 多态是C++面向对象三大特性之一 多态分为两类 静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名 动态多态: 派生类和虚函数实现运行时多态 静态多态和动态多态区别: 静态多态的函数地址早绑定 - 编译阶段确定函数地址 动态多态的函数地址晚绑定 - 运行阶段确定函数地址 1 基本概念 ...

catkin_ws的博客 615

C++学习笔记——05 C++的多态性

1.静态多态性 编译时的多态性 函数重载和运算符重载2.动态多态性 运行时的多态性 虚函数不用来定义对象而只作为一种基本类型用作继承的类,称为抽象类。由于常用作基类也称为抽象基类。凡是包含纯虚函数的类都是抽象类,因为纯虚函数不能被调用,包含它的类无法建立对象。抽象类的作用是作为一个类族的共同基类,或者说,为一个类族提供一个公共接口。如果在抽象类的派生类中对基类的所有纯虚函数进行了定义,那么这个类就是可以用来定义对象的具体类。

昭与云的博客 222

C++学习笔记 | 多态

在基类的成员函数实现基本功能,并且把基类的成员函数设置为虚函数,留给派生类去扩展功能,提升性能,或者实现个性化的功能,因此产生了多态的概念。即通过对虚函数的重写实现多态。

qq_48269338的博客 451

C++学习笔记:多态

C++学习笔记:多态

m0_70088853的博客 1037

C++ 多态学习笔记(下)

开始新的学习之前,我们先通过一段涉及继承、多态的 代码来回忆、加深理解。Animal作为基类,我们要给每种动物实例化出sound()的模块,因为Animal在实际意义上没什么好实例化的,所以设计成抽象类。虽然Animal不能实例化出对象,,来作为的条件。这里的Animal就是作为一个像工具人一样的类,本身就不打算实例一个Animal,因为必须要指定出具体是什么动物之后,sound()这个函数才有意义。

2301_79501467的博客 1288

C++学习笔记 —— 多态

文章目录什么是多态多态的使用静态连编动态连编多态的好处计算器例子纯虚函数和抽象类虚析构和纯虚析构向上转型和向下转型向下转型向上转型发生了多态 什么是多态 父类引用或者指针指向子类对象。 编译时多态(静态连编):函数和运算符重载。编译阶段就确定了地址。 运行时多态(动态连编):通常说的多态。 多态的使用 使用条件: 父类中函数为虚函数 子类继承父类并重写该虚函数,子类virtual可写可不写 父类...

Charles Ren's Tech Blog 618
上一篇: PCB学习记录---C51单片机最小系统
下一篇: lvgl cplusplus移植踩坑记录
python_use
博客等级 码龄5年 430粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值