C++—纯虚函数
一、前言
定义一个函数为虚函数,不代表函数为不被实现的函数。
定义函数为虚函数是为了允许用基类的指针来调用子类的这个函数。
定义一个函数为纯虚函数,才代表函数没有被实现。
定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数才能实例化对象。
虚函数:virtual 返回值类型 函数名(参数列表) {函数体},然后这个类也就变成的虚基类,然后子类重写父类的虚函数。
纯虚函数:语法:virtual 返回值类型 函数名(参数列表)=0,当类中有了纯虚函数,这个类也称为抽象类。抽象类特点:无法实例化对象,子类必须重写抽象类中的纯虚函数,否则也属于抽象类。
二、引入的原因
1、为了方便使用多态特性,我们常常需要在基类中定义虚拟函数。
2、在很多情况下,基类本身生成对象是不合情理的。例如,动物作为一个基类可以派生出老虎、孔雀等子类,但动物本身生成对象明显不合常理。
为了解决上述问题,引入了纯虚函数的概念,将函数定义为纯虚函数(方法:virtual ReturnType Function()= 0;) ,则编译器要求在派生类中必须予以重写以实现多态性。同时含有纯虚拟函数的类称为抽象类,它不能生成对象 。这样就很好地解决了上述两个问题。
声明了纯虚函数的类是一个抽象类。所以,用户不能创建类的实例,只能创建它的派生类的实例。
三、何时使用纯虚函数?
(1)当想在基类中抽象出一个方法,且该基类只做能被继承,而不能被实例化;
(2)这个方法必须在派生类(derived class)中被实现;
在有动态分配堆上内存的时候,析构函数必须是虚函数,但没有必要是纯虚的。
有纯虚函数的类是抽象类,不能生成对象,只能派生。他派生的类的纯虚函数没有被改写,那么,它的派生类还是个抽象类。
定义纯虚函数就是为了让基类不可实例化化,因为实例化这样的抽象数据结构本身并没有意义,或者给出实现也没有意义。
纯虚函数两个目的:
1、为了安全,因为避免任何需要明确但是因为不小心而导致的未知的结果,提醒子类去做应做的实现。
2、为了效率,不是程序执行的效率,而是为了编码的效率。
纯虚函数可以有定义哦!但是一般没有定义
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
C++—纯虚函数
一、前言 定义一个函数为虚函数,不代表函数为不被实现的函数。 定义函数为虚函数是为了允许用基类的指针来调用子类的这个函数。 定义一个函数为纯虚函数,才代表函数没有被实现。 定义纯虚函数是为了实现一个接口,起到一个规范的作用&…...
![](https://www.ngui.cc/images/no-images.jpg)
经过卷积神经网络之后的图片的尺寸如何计算
经过卷积神经网络(Convolutional Neural Network,CNN)处理后,图片的尺寸会发生变化,这是由于卷积层、池化层等操作引起的。计算图片经过卷积神经网络后的尺寸变化通常需要考虑卷积核大小、步幅(stride&…...
![](https://www.ngui.cc/images/no-images.jpg)
Java升级JDK17(更高版本同理),修改maven
记住三个网址就行:下面这个是oracle的 Java Platform, Standard Edition 17 ReferenceImplementations https://www.oracle.com/java/technologies/downloads/#jdk17-windows 另外一个 redhat旗下的:这个是开源的(推荐这个!&am…...
![](https://img-blog.csdnimg.cn/img_convert/6f604a91f31369a47f472f896fd2aa25.png)
Go测试之.golden 文件
Go测试中的.golden 文件是干什么用的?请举例说明 在Go语言中,.golden文件通常用于测试中的黄金文件(golden files)。黄金文件是在测试期间记录预期输出结果的文件。测试用例运行时,黄金文件用于比较实际输出与预期输出…...
![](https://img-blog.csdnimg.cn/8f91680a03ca4336a1e2a02a06400749.png#pic_center)
回归预测 | MATLAB实现GA-RF遗传算法优化随机森林算法多输入单输出回归预测(多指标,多图)
回归预测 | MATLAB实现GA-RF遗传算法优化随机森林算法多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现GA-RF遗传算法优化随机森林算法多输入单输出回归预测(多指标,多图)效果一览基本介绍程…...
![](https://img-blog.csdnimg.cn/4b092c99d95c4a308527af6c095181b8.png)
springboot整合rabbitmq死信队列
springboot整合rabbitmq死信队列 什么是死信 说道死信,可能大部分观众大姥爷会有懵逼的想法,什么是死信?死信队列,俗称DLX,翻译过来的名称为Dead Letter Exchange 死信交换机。当消息限定时间内未被消费,…...
![](https://img-blog.csdnimg.cn/8492f848225c4922a64552d822893c74.png)
高中信息技术教资考试模拟卷(22下)
2022 年下半年全国教师资格考试模考卷一 (高中信息技术) 一、单项选择题(本大题共 15 小题,每小题 3 分,共 45 分) 1.2006 年 10 月 25 日,深圳警方成功解救出一名被网络骗子孙某…...
![](https://www.ngui.cc/images/no-images.jpg)
Linux中shadow及passwd格式内容解析
/etc/passwd文件包括Linux账号信息,示例如下: root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin 具体格式 用户名࿱…...
![](https://img-blog.csdnimg.cn/img_convert/0d6853809ef51e3f04ae6cceb73a85b5.jpeg)
计算机视觉 – Computer Vision | CV
计算机视觉为什么重要? 人的大脑皮层, 有差不多 70% 都是在处理视觉信息。 是人类获取信息最主要的渠道,没有之一。 在网络世界,照片和视频(图像的集合)也正在发生爆炸式的增长! 下图是网络上…...
![](https://img-blog.csdnimg.cn/ea0a5444f96c44468539eed4a8da1c4b.png)
2.Redis 通用命令
Redis 中最核心的两个命令: set 作用:设置 key 对应的 value 值并存储进去。若key已包含一个值,则无论其类型如何,都会覆盖该值。在SET操作成功时,将丢弃与密钥相关联的任何先前生存时间。 对于上述这里的 key和val…...
![](https://img-blog.csdnimg.cn/1d340e4604e64aee897a195b7b18b7b8.png)
【学习FreeRTOS】第18章——FreeRTOS软件定时器
1.软件定时器的简介 定时器:从指定的时刻开始,经过一个指定时间,然后触发一个超时事件,用户可自定义定时器的周期硬件定时器:芯片本身自带的定时器模块,硬件定时器的精度一般很高,每次在定时时…...
![](https://img-blog.csdnimg.cn/img_convert/956c1369947d5efab27b8d45307ed657.jpeg)
C++--两个数组的dp问题(2)
1.交错字符串 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 给定三个字符串 s1、s2、s3,请判断 s3 能不能由 s1 和 s2 交织(交错) 组成。 两个字符串 s 和 t 交织 的定义与过程如下,其中每个字符串都…...
![](https://www.ngui.cc/images/no-images.jpg)
利用人工智能彻底改变库存管理:综合指南
通过本指南了解人工智能如何增强库存管理,为希望简化运营的管理者和企业主提供帮助。 库存管理是任何销售实物产品的企业的重要组成部分。它包括跟踪库存水平,预测未来需求,并确保始终有足够的产品来满足客户需求,但又不会因库存过多而浪费金钱。有效的库存管理可以显着降…...
![](https://img-blog.csdnimg.cn/c02590d4e72f4e23a81db2f091600c69.png)
连接器信号完整性仿真教程 七
本将介绍微带线及差分微带线仿真。做连接器信号完整性仿真时,有时后没法将激励端口直接设置到连接器端子上,这就需画出连接器PCB PAD,将激励端口设置在PAD的端面上,或者用引线连接PAD,将引线引出到适当的位置ÿ…...
![](https://img-blog.csdnimg.cn/1107fe22b3554edfbdfa966a6b8dfb25.png)
Wireshark数据抓包分析之UDP协议
一、实验目的: 通过使用wireshark对UDP数据包的抓取分析UDP协议的内容 二、预备知识: UDP协议的概念:UDP使用底层的互联网协议来传送报文,同IP一样提供不可靠的无连接传输服务。它也不提供报文到达确认、排序及流量控制等功能。 …...
![](https://img-blog.csdnimg.cn/5f2308166f5745499a4688be99c46f90.png)
Java小游戏
一、需求 二、思路一 HP当然是怪物的一个属性成员,而武器是角色的一个属性成员,类型可以使字符串,用于描述目前角色所装备的武器。角色类有一个攻击方法,以被攻击怪物为参数,当实施一次攻击时,攻击方法被调…...
![](https://img-blog.csdnimg.cn/e4ce049d1f8249a48a894d42f4201e55.png)
服务器Linux系统配置mysql数据库主从自动备份
服务器Linux系统配置mysql数据库主从自动备份 当数据内容越来越多的时候,数据库也变得越来越大了。如果不小心误删了,或者被黑主机了,那就什么都没有了。所以数据库的数据怎么能让它不丢失做到万无一失变得尤为重要! 我是艾西&a…...
![](https://www.ngui.cc/images/no-images.jpg)
Java通过PowerMockito和Mokito进行单元测试
PowerMockito和Mokito的概念 PowerMockito和Mockito都是Java语言中的测试框架,用于进行单元测试和集成测试。它们中的每一个都有不同的功能和应用。 Mockito是一个基于模拟的测试框架。它允许你模拟对象,在测试中隔离被测代码的依赖项。使用Mockito&am…...
![](https://img-blog.csdnimg.cn/img_convert/7c99f78d2f3bcdcc7c2181a659eb20f6.png)
数字化技术无限延伸,VR全景点亮智慧生活
随着互联网的发展,我们无时无刻不再享受着互联网给我们带来的便利,数字化生活正在无限延伸,各行各业也开始积极布局智能生活。要说智慧生活哪个方面应用的比较多,那应该就是VR全景了,目前VR全景已经被各个行业广泛应用…...
![](https://img-blog.csdnimg.cn/img_convert/e6a2c3e58ab3277bbcc05e2814419af6.jpeg)
抖音艺术签名小程序源码/艺术签名设计小程序源码/字节跳动小程序开发
最近很火的抖音艺术签名小程序源码,这是一款艺术签名设计小程序源码,字节跳动小程序开发,之适用于字节系小程序。介意请绕过! 下载地址:https://bbs.csdn.net/topics/616145725...
![](https://img-blog.csdnimg.cn/img_convert/083a99e74772c21d513856d6eb6f1105.png)
养号自动化,指纹浏览器和RPA机器人解除烦恼
在这个充满科技魔力的时代,社交媒体已经成为人们生活的一部分,而Facebook更是我们分享欢乐、联络亲友的重要平台。然而,随之而来的是一个棘手的问题:如何保持账号的活跃度,而又不被沉重的养号工作压垮?别担…...
![](https://img-blog.csdnimg.cn/8d3e069f784648b1b0bc1df179567e5c.jpeg)
ES6中promise的使用
ES6中promise的使用 本文目录 ES6中promise的使用基础介绍箭头函数function函数状态 原型方法Promise.prototype.then()Promise.prototype.catch() 静态方法Promise.all()Promise.race()Promise.any() 链式回调 基础介绍 官网:https://promisesaplus.com/ window.…...
![](https://img-blog.csdnimg.cn/17adc4e6dc1e4af5b79e76144681e3a0.png)
前端如何走通后端接口
0 写在前面 现在基本都是前后端分离的项目了,那么前端小伙伴如何获取后端小伙伴接口呢? 1 条件 同一WiFi下,让后端小伙伴分享出自己的ip地址: 步骤1:winr调出运行界面 步骤2:cmd调出命令行窗口 步骤3:…...
![](https://img-blog.csdnimg.cn/5002a344dbfe4d6e9e206a10f817e2f4.png)
iOS swift5 扫描二维码
文章目录 1.生成二维码图片2.扫描二维码(含上下扫描动画)2.1 记得在info.plist中添加相机权限描述 1.生成二维码图片 import UIKit import CoreImagefunc generateQRCode(from string: String) -> UIImage? {let data string.data(using: String.En…...
![](https://img-blog.csdnimg.cn/315b5b1462754d97a82ade9cb76d7126.png)
【马拉车算法/动态规划】最长回文字串
最长回文字串 1.问题描述2.中心扩展法(O(N^2))3.动态规划4.Manacher(马拉车算法) 1.问题描述 常用有3种算法:中心扩展法、动态规划和Manacher算法 2.中心扩展法(O(N^2)) 解释: 从中心向外扩展。 分为两种…...
![](https://www.ngui.cc/images/no-images.jpg)
什么是 fail-fast? 什么是fail-safe?
面试回答 在系统设计中,快速失效(fail-fast)系统一种可以立即报告任何可能表明故障的情况的系统。快速失效系统通常设计用于停止正常操作,而不是试图继续可能存在缺陷的过程。 其实,这是一种理念,说白了就是…...
![](https://img-blog.csdnimg.cn/img_convert/8c39ee15e5f0494a5a1730a16ae10c96.png)
第三届计算机、物联网与控制工程国际学术会议(CITCE 2023)
第三届计算机、物联网与控制工程国际学术会议(CITCE 2023) The 3rd International Conference on Computer, Internet of Things and Control Engineering(CITCE 2023) 第三届计算机、物联网与控制工程国际学术会议(CITCE 2023)…...
![](https://www.ngui.cc/images/no-images.jpg)
react antd 日期选择 WeekPicker MonthPicker 取值转为起止日期
默认WeekPicker 取值,返回的是2023年34周,这样后台用起来不方便。可以转化成指定周的起止日期 const startDate moment(weekData).day(1).format(YYYY-MM-DD); // 周一日期 const endDate moment(weekData).day(7).format(YYYY-MM-DD); // 周日日期同…...
![](https://img-blog.csdnimg.cn/a058fbadfbcd415381c4352bd6c2f2db.png)
table,设置 数据相同时, 合并列
<el-table :data"tableData" :span-method"objectSpanMethod" border style"width: 100%" show-summary><el-table-column type"index" label"序号" width"100" /><el-table-column prop"dat…...
![](https://www.ngui.cc/images/no-images.jpg)
kotlin如何接收前端传递过来的数据
Kotlin 可以使用 Spring Boot 等框架来接收前端传递过来的数据。 在 Spring Boot 中,你可以使用 RequestBody 注解来将前端传递的 JSON 格式数据转换为相应的 Kotlin 对象。 示例代码: RestController RequestMapping("/api") class UserCo…...
![](/images/no-images.jpg)
网络营销方案简述/seo成创网络
作者|桃子上一篇文章介绍了如何成功安装firefox及Selenium IDE,这篇介绍通过登录功能了解Selenium IDE是Firefox浏览器的一款插件,实现网页的录制及回放,可以脚本导出进行后续的开发调试,可以帮助初学自动化的测试人员了解自动化流…...
![](/images/no-images.jpg)
网站建设背景图/湖南企业seo优化
1.listbox控件如何多选取值 将listbox控件中的selectionmode属性值设置为multiple,listbox控件可以支持多选 取值问题 假设控件为listbox1 Dim i As Integer Dim str As String For i 0 To ListBox1.Items.Count - 1 If ListBox1.Items(i).Selected …...
山东省招投标信息网/扬州seo优化
动态菜单: 不同用户登录后,应该看到不同菜单结构 1、 修改 index.html 加载基本菜单 url 路径 2、 在 MenuAction 添加 showMenu 方法 3、 编写业务层 调用 DAO ”from Menu m inner join fetch m.roles r inner join fetch r.users u where…...
![](/images/no-images.jpg)
无锡网站制作联系方式/品牌宣传策略有哪些
#!usr/bin/env python #-*- codingutf-8 -*- #出现问题 为什么enumerate之后 用fromkeys 查询4,6不显示 # li [11,22] # a dict(enumerate(li,5)) # print a # # b a.fromkeys([22,33]) # print b#直接弄一个字典,fromkeys可以创建新字典 # li {1:k1,2:k2} #…...
![](https://img-blog.csdnimg.cn/img_convert/56062b9704d5a5040a311672ddffa3d6.gif)
seo 网站太小/网站网络推广优化
天使的脸庞、魔鬼的声音是一种什么体验?声音和相貌不符的痛苦你不懂…01cedarwood_每次打电话都以为我是男人02鱼嘎尾我睡觉刚起来声音特别粗,有一次我爸打来立马发火问我哪个男人在????? 03哎我…...
![](https://img-blog.csdnimg.cn/2020060822165643.jpg?x-oss-process=,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NoaW5lZg==,size_16,color_FFFFFF,t_70#pic_center)
电脑经销部开具网站建设费/服务营销理论
第193场周赛[1480. 一维数组的动态和](https://leetcode-cn.com/problems/running-sum-of-1d-array/)题目描述1Solution1[1481. 不同整数的最少数目](https://leetcode-cn.com/problems/least-number-of-unique-integers-after-k-removals/)题目描述2Solution2[1482. 制作 m 束…...