C++多态与虚函数的使用注意

文章目录

  • 什么情况下用多态
  • 构造和析构的顺序
  • 为什么要把析构函数声明为虚函数
  • 为什么不能在构造函数和析构函数中使用虚函数

什么情况下用多态

多态是面向对象编程中的一个重要概念,可以提高代码的可扩展性和可维护性。在以下情况下,可以考虑使用多态:

  • 当有一个基类或接口,并且存在多个具体的子类或实现类时,可以使用多态来统一处理这些不同的子类或实现类对象。
  • 当需要对多个对象执行相同的操作时,可以使用多态来简化代码,提高代码的可读性和可维护性。
  • 当需要根据不同的条件来执行不同的操作时,可以使用多态来实现条件分支的逻辑。
  • 当需要在运行时动态地确定对象的类型时,可以使用多态来实现。
  • 当你需要以一种统一的方式处理不同类型的对象时,可以使用多态。

总之,多态可以使代码更加灵活、可扩展和可维护,并能提高代码的可读性和可靠性。它是面向对象编程中的一个重要概念,应该在合适的情况下加以应用。
例子
对于游戏装备,不同的装备对于一个游戏角色有不同的作用效果,这些装备类就可以通过多态实现对于游戏角色的不同作用效果
对于交通工具,如果要让他们启动,不同的交通工具他们自身的启动的方式是不同的,这些交通工具类就可以通过多态实现

构造和析构的

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

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

相关文章

监督学习 - 决策树(Decision Trees)

什么是机器学习 决策树(Decision Trees)是一种基于树形结构进行决策的模型,广泛应用于分类和回归任务。它通过对数据集进行递归划分,构建一棵树,每个节点代表一个特征,每个分支代表一个决策规则&#xff0…

数据结构二叉树创建及例题(上)

今天就带领大家来到树的世界,树无论是在考试上还是实际学习方面都是比较重点的,大家在这块知识要花时间搞懂. 文章目录 前言 一、树的二叉链表定义 二、二叉树三种遍历方式(递归方式) 1.先序遍历方式(根左右) 2.中序遍历方式(左根右) 3.后序遍历方式(左右根) 三、二叉树的…

单片机I/O口驱动MOS管

自记录: 使用单片机做一个PLC,输出可如下两种情况: 单片机I/O口驱动,为什么一般都选用三极管而不是MOS管? 1.单片机的IO口,有一定的带负载能力。但电流很小,驱动能力有限,一般在10-20mA以内。…

go-zero是什么?它有什么功能和特性?它值不值得我们去学习?我们该如何去学习呢?

go-zero是一个基于Go语言的Web和微服务开发框架,它提供了一系列的工具和库,帮助开发者构建高性能、可扩展的应用程序。go-zero采用了领域驱动设计(DDD)和依赖注入(DI)等先进的设计理念,使得开发…

Redis面试题10

Redis 支持哪些数据结构? Redis 支持以下几种常用的数据结构: 字符串(String):用于存储字符串值,可以是文本或二进制数据。 列表(List):用于存储一个有序的字符串列表&am…

用通俗易懂的方式讲解大模型分布式训练并行技术:序列并行

近年来,随着Transformer、MOE架构的提出,使得深度学习模型轻松突破上万亿规模参数,传统的单机单卡模式已经无法满足超大模型进行训练的要求。因此,我们需要基于单机多卡、甚至是多机多卡进行分布式大模型的训练。 而利用AI集群&a…

Maven_下载_安装_配置

文章参考:https://zhuanlan.zhihu.com/p/615382243 Maven简介 Maven 是 Apache 软件基金会的一个开源项目,是一个优秀的项目构建工具,它用来帮助开发者管理项目中的 jar,以及 jar 之间的依赖关系、完成项目的编译、测试、打包和发布等工作。 maven优点:…

31K+ stars 超炫酷的 Docker 可视化开源工具

31K stars 超炫酷的 Docker 可视化开源工具 原创 小奇 爱编程爱技术 2024-01-10 09:02 发表于北京 今天给大家分享一个适合开发人员使用的 Docker 可视化工具:LazyDocker。基于终端的一个可视化管理工具,支持健盘操作和鼠标点击。 相比 Portainer 功能没…

CCF模拟题 202309-2 坐标变换(其二)

问题描述 试题编号: 202309-2 试题名称: 坐标变换(其二) 时间限制: 1.0s 内存限制: 512.0MB 问题描述: 对于平面直角坐标系上的坐标 (x,y),小 P 定义了如下两…

为什么推荐大家使用动态住宅ip?怎么选择?

编辑代理ip的类型有很多,本文来介绍什么是动态住宅ip,为什么很多博主都推荐使用动态住宅ip,他到底有什么好处呢,接下来我们来学习一下。 一、什么是动态住宅ip 网络上的代理供应商很多,通常我们接触的比较多的几种类…

Python 实践——外星人入侵小游戏(上)

Python 实践——外星人入侵小游戏(上) 目录 Python 实践——外星人入侵小游戏(上)安装pip/pygame1.开始项目2.设置屏幕背景色基本操作: 3. 设置类4. 添加飞船图像5.导入程序基本操作:完整: 总结…

Springboot3+EasyExcel由浅入深

环境介绍 技术栈 springboot3easyexcel 软件 版本 IDEA IntelliJ IDEA 2022.2.1 JDK 17 Spring Boot 3 EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。 他能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、…

洛阳展馆讲解器,博物馆讲解器,无线讲解器出租,会展讲解器

无线一对多团队解说器的特点比较多,比如:1、声音传输的时分可以反抗噪音等,不会遭到搅扰。2、便利性,像这么细巧的语音导览可以随身携带,十分的便利。3、可以免去很多繁琐的进程,变得简单高效。4、明晰性&a…

mysql索引失效场景与mysql优化方式

索引失效场景 联合索引不满足最左匹配原则 索引列参与了运算,会导致全表扫描,索引失效 索引列参使用了函数 模糊查询时(like语句),模糊匹配的占位符位于条件的左侧 like %abc,like %abc% 都会导致失效…

【JVM的相关参数和调优】

文章目录 JVM 调优的参数类型一、标配参数二、X参数三、XX参数 JVM 调优的常用参数 JVM 调优的参数类型 一、标配参数 这类此参数在jdk的各个版本之间很少会变化,基本不改变 java -version,查看当前电脑上的jdk的版本信息 java -help,查看…

安卓(雷电)模拟器清除屏幕密码[亲测可用]

1、设置磁盘可写 启动模拟器,然后在模拟器的设置界面,设置磁盘共享为可写入,重启模拟器,如下图: 2、找到模拟器目录 返回桌面,右键模拟器图标,打开文件所在目录,如下图&#xff1a…

Casper Network (CSPR)2024 年愿景:通过投资促进增长

Casper Network (CSPR)是行业领先的 Layer-1 区块链网络之一,通过推出了一系列值得关注的技术改进和倡议,已经为 2024 年做好了准备。 在过去的一年里,Casper Network (CSPR)不断取得里程碑式的进展,例如推…

【小程序】微信小程序关联公众号(服务号)推送通知消息

一、背景 最近开发的一个小程序项目需要通过服务号来推送通知。但是在最开始开发小程序的时候并没有考虑到这个功能。 二、准备条件 预备知识: 小程序openid:小程序用户的唯一id 公众号openid:公众号用户的唯一id unionid:同…

Paddle模型转ONNX

深度学习模型在硬件加速器上的部署常常要用到ONNX(Open Neural Network Exchange,开放神经网络交换)格式,也可以通过ONNX实现不同AI框架(如Pytorch、TensorFlow、Caffe2、PaddlePaddle等)之间的模型转换。 …

Transformer详解【学习笔记】

文章目录 1、Transformer绪论2、Encoders和Decoder2.1 Encoders2.1.1 输入部分2.1.2 多头注意力机制2.1.3 残差2.1.4 LayNorm(Layer Normalization)2.1.5 前馈神经网路 2.2 Decoder2.2.1 多头注意力机制2.2.2 交互层 1、Transformer绪论 Transformer在做…