3.1 C++纯虚函数

news2024/11/25 4:48:11

C++ 纯虚函数

C++的纯虚函数是一种特殊的虚函数,没有函数体,只有函数原型。

纯虚函数语法格式为:
在这里插入图片描述
等号后面的 0 表示该函数为纯虚函数。

纯虚函数在抽象类中定义,抽象类是指包含至少一个纯虚函数的类,不能被实例化。

抽象类的子类必须实现所有纯虚函数,否则也会成为抽象类。

纯虚函数的作用是为了实现接口的统一规范,使得不同的子类可以通过实现相同的纯虚函数来实现不同的行为。

C++ 纯虚函数案例

我写个 demo 方便读者理解:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上述我写的 demo 有一个抽象类 Animal 和两个子类 Dog 和 Cat,且子类都继承 Animal 并实现纯虚函数 speak()。

上述 demo 编译运行结果:
在这里插入图片描述
C++ 纯虚函数注意事项

抽象类中至少有一个纯虚函数,如果一个类中包含纯虚函数,那么这个类就是抽象类,不能被实例化。

子类必须实现所有纯虚函数,如果子类没有实现父类中的纯虚函数,那么这个子类仍然是抽象类,不能被实例化。

纯虚函数可以有定义,但是定义必须在类外部。如果在类内部给纯虚函数提供了定义,那么它就不再是纯虚函数。

如果子类实现了与父类中纯虚函数同名的普通函数,那么这个函数将覆盖父类中的纯虚函数。

纯虚函数的参数和返回值与普通函数一样,可以有任意类型的参数和返回值。

如果纯虚函数只在类内部声明,而没有在类外部提供定义,那么它就是一个接口,只起到了接口的作用,不能被调用。

如果纯虚函数在父类中有定义,但是在子类中没有实现,那么子类仍然是抽象类,不能被实例化。

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

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

相关文章

bim在建筑工程中的应用有哪些?

BIM以其在协同设计、冲突检测、可视化沟通、项目控制和可持续性设计等方面的应用,提高了建筑工程的效率、质量和可持续性,为各利益相关者带来了诸多益处。它已逐渐成为现代建筑工程不可或缺的重要工具和方法。BIM在建筑工程的作用越来越明显。 ​  BIM…

HOT29-删除链表的倒数第 N 个结点

leetcode原题链接:删除链表的倒数第 N 个结点 题目描述 删除链表的倒数第 N 个结点。 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,…

伦敦金k线图基础知识有多重要?

正所谓万丈高楼平地起,不积跬步无以至千里,在投资市场上也才如此,从来没有投资者能够在伦敦金市场上一蹴而就地取得成功,很多成功的交易者都是一步一个脚印,从最基础知识开始学起,逐渐成为专业的投资者。 看…

新星计划2023【Java基础及数据库Mysql】学习方向报名入口!

新星计划2023【Java基础及数据库Mysql】学习方向报名入口! 一、关于本学习方向导师二、关于本学习方向官方微信群三、关于活动时间&奖品&要求四、学习计划五、TOP5评选规则六、活动要求七、注意事项 本赛道是针对那些希望从事Java开发并且想要学习如何与数据…

NVIDIA-Linux-x86_64-535.54.03.run cuda_12.2.0_535.54.03_linux.run下载地址

Official Drivers | NVIDIA Linux x64 (AMD64/EM64T) Display Driver | 535.54.03 | Linux 64-bit | NVIDIA 下载连接 Download NVIDIA, GeForce, Quadro, and Tesla DriversDownload drivers for NVIDIA graphics cards, video cards, GPU accelerators, and for other GeFor…

CAD转换PDF怎么转换?教你几种简单转换方法

CAD(计算机辅助设计)是一种广泛应用于工程设计和制造领域的软件。虽然CAD可以生成高质量的设计图纸,但是在与其他人共享这些图纸时可能会出现问题。因此,将CAD文件转换成PDF可以在各种设备上打开和查看。此外PDF还可以在不改变文件…

Postman设置断言

目录 前言: 一、断言的定义 二、Postman断言的语法 三、Postman中chai.js断言常用语法 前言: 在进行API测试时,断言是一项重要的功能。它能帮助我们验证接口的响应是否符合预期结果,从而确保API的正确性和可靠性。在Postman中…

Hudi 文件布局(File Layouts)

文章目录 Hudi File Layouts1 核心概念1.1 Base File1.2 Base File1.3 File Slice1.4 File Group 2. File Layouts写过程2.1 COW表2.2 MOR表 Hudi File Layouts 1 核心概念 File Layouts(文件布局)是指Hudi的数据文件在存储介质上的分布,Hu…

剑指 Offer ! ! 36. 二叉搜索树与双向链表

剑指 Offer 36. 二叉搜索树与双向链表 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。 为了让您更好地理解问题,以下面的二叉搜索树为例: 思路&…

Spring Boot 中的 @MessageMapping 注解:原理、用法与示例

Spring Boot 中的 MessageMapping 注解:原理、用法与示例 前言 随着 Web 技术的发展,越来越多的应用程序开始使用 WebSocket 协议来实现实时通信。Spring Boot 提供了对 WebSocket 的支持,其中 MessageMapping 注解是一个常用的注解&#x…

【Keepalived】keepalived部署

1.keepalived二进制安装【Ubuntu20.04】 (1).官网下载二进制源码包 官网: https://keepalived.org/download.html 下载二进制包: wget https://keepalived.org/software/keepalived-2.2.7.tar.gz亦可通过window本地下载并上传 (2).解压文件 [rootu…

[ISO26262]汽车功能安全第二部分:功能安全管理

Road vehicles—Functionalsafety— Part 2: Management offunctionalsafety (ISO 26262-2:2011, MOD) GB/T34590《 道路车辆 功能安全》分为以下部分: TOPS:当前所浏览位置: 随着技术日益复杂、 软件和机电一体化应用不断增加, 来自系统性失效和随机硬件失效的风险逐渐…

蓝桥杯专题-试题版含答案-【两点距离】【字符串替换】【盗梦空间】【素数】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…

无向图讲解

讲完了有向图,咱再来讲一下无向图。 直观来说若一个图中每条边都是无方向的,则称为无向图,无向图中的边均是顶点的无序对,无序对通常用圆括号表示。 定义 无向图G=<V,E>,其中: 1.V是非空集合,称为顶点集。 2.E是V中元素构成的无序二元组的集合,称为边集。 解释 直…

如何选择适合的项目管理软件?你需要考虑这些问题

在市场上有很多项目管理软件可供选择&#xff0c;但是如何确定哪种工具最易使用&#xff0c;哪些功能是项目管理必备的呢&#xff1f;在选择项目管理软件之前&#xff0c;你需要考虑以下问题&#xff1a; 项目性质 不同的项目需要不同的管理方法&#xff0c;敏捷管理适用于某…

chatgpt赋能python:Python量化数据来源-介绍

Python量化数据来源 - 介绍 Python在金融量化分析领域中得到了广泛的应用&#xff0c;这部分应用通常被称为Python量化金融。Python量化数据来源是Python量化金融分析的基础&#xff0c;只有良好的数据来源才能保证分析的准确性和有效性。 Python具有以其代码简洁易懂、强大的…

2023年富媒体行业研究报告

第一章 行业概况 富媒体行业是一个快速发展的领域&#xff0c;它涵盖了从视频、音频、动画、互动内容到虚拟现实和增强现实等多种媒体形式。这些媒体形式的共同特点是&#xff0c;它们都能提供比传统文本和静态图像更丰富、更引人入胜的用户体验。 在中国&#xff0c;富媒体行…

深入JavaScript的运行原理

1 深入V8引擎原理 2 JS执行上下文 3 全局代码执行过程 4 函数代码执行过程 5 作用域和作用域链 源代码->抽象语法树->字节码。 其中的字节码在函数执行的时候&#xff0c;由于参数的类型是一样的&#xff0c;所以有优化的机器码&#xff0c;但是如果参数类型发生变化…

昌平GPU集群使用指南 - 非官方版

昌平GPU集群使用指南 - 非官方版 可以在网址导航里看平台的使用指南&#xff0c;本文只是有益补充&#xff01; &#xff08;注&#xff1a;镜像只需要关闭&#xff0c;不需要删除&#xff09; 大致操作流程&#xff1a; 进入protainer&#xff0c;进入containers&#xff0c…

Docker删除镜像,以及导入/导出镜像

总结一下&#xff1a;删除镜像&#xff0c;以及导入/导出镜像的步骤和命令。 一、删除 1.docker rmi remove images。该命令用于删除本地镜像。 镜像通过 指定。如果省略要删除镜像的 tag&#xff0c;默认删除的是 lastest 版本。 比如&#xff1a;docker rmi zookeeper 2.删…