C++基础之纯虚函数

2023-11-19

一.纯虚函数的定义

纯虚函数是一种特殊的虚函数,在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。C++中的纯虚函数,一般在函数名后使用=0作为此类函数的标志。

前面已经讲解了虚函数,虚函数可以在基类中实现,但是纯虚函数不能在基类中实现,且必须在子类中实现。

二.纯虚函数的作用

1、为了方便使用多态特性,我们常常需要在基类中定义虚函数。
2、在很多情况下,基类本身生成对象是不合情理的。例如,动物作为一个基类可以派生出老虎、孔雀等子类,但动物本身生成对象明显不合常理。为了解决上述问题,引入了纯虚函数的概念。
纯虚函数的格式:virtual ReturnType Function()= 0;

三.纯虚函数实例演示

class A {
public:
    void fun()
	{
		cout<<"普通函数"<<endl;
	}
    virtual void fun1()=0;
};

class B:public A{
	virtual void fun1()
	{
		cout<<"派生类fun1函数"<<endl;
	}
};
int main()
{
	A*a=new B();
	a->fun();
	a->fun1();
	return 0;
}

结果:
在这里插入图片描述
分析:其实纯虚函数是虚函数的一种,只是纯虚函数不能在基类中实现,而在派生类中必须实现。

四.总结

1.纯虚函数是虚函数的一种。
2.纯虚函数不能在基类中实现功能,且定义格式为virtual ReturnType Function()= 0。
3.基类中的纯虚函数必须在子类中实现

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++基础之纯虚函数 的相关文章

随机推荐

  • Python 安装 Numpy 出现 错误:只允许在 C99 模式下使用‘for’循环初始化声明 用gcc编译出现

    在Liunx 离线安装 Numpy 时候 python setup py install 用gcc编译出现 错误 只允许在 C99 模式下使用 for 循环初始化声明 然后执行命令 CC gcc std c99 python setup p
  • 解决-画图程序无法读取-无效的位图文件

    辛苦画的图 今天一打开就看到这个 心情是呵呵的 搜了一下大概是图太大了 右击win10自带的图片 给裁剪小了就OK了
  • 《精通Spring4.x 企业应用开发实战》第20章 实战型单元测试

    前言 TestNG是必须事先掌握的基础测试框架 大多数测试框架和测试工具都在此基础上扩展而来 Spring测试框架为集成 TestNG JUnit 等单元测试框架提供了很好的支持 并为测试 Spring 应用提供了许多基础设施 在项目单元测
  • 互联网摸鱼日报(2023-03-11)

    互联网摸鱼日报 2023 03 11 InfoQ 热门话题 架构师 2023 年 3 月 世界级编程大师Bob 大叔为 干净代码 辩护遭质疑 时代变了 别用Clean Code那套要求我们了 从传统数据库痛点看分布式数据库选型问题 API
  • linux学习课程从入门到精通:Centos8用户管理

    本人从事IT行业已有十多年 有着丰富的实战经验 总结了大量的学习方法 更是积累了很多的学习资料 很高兴能在这里跟大家交流学习 希望能在这里跟大家共同进步和成长 全套学习资料移步至公众号 学神来啦 更多学习资料添加扣扣资源群 66130895
  • Compiler- 自增运算

    我们来看一下C语言中的前自增 i 和后自增 i 这个经典案例 大家在学习C的时候肯定学过前自增是先自增 然后将结果用于计算 后自增是先参与计算 再增加 好 看一下这段代码的结果 include
  • 数据结构_二元组

    今天在牛客网上看到这样一个题目 当时做的时候直接没反应过来 后来看解析的时候 才知道 二元组 图论上学过嘛 而且 我们以前也经常接触 图 V E 就是嘛 下面的解释转载自 https www cnblogs com larryzeal p
  • Python Flask怎么实现前后端分离

    你可以在 Flask 中使用 ajax 和 JSON 来实现前后端分离 首先 在 Flask 中创建一个视图函数 它会返回一个 JSON 响应 例如 app route api data def get data data key valu
  • 卷积神经网络改进想法初探(上篇)

    最近一直在看卷积神经网络 想改进改进弄出点新东西来 看了好多论文 写了一篇综述 对深度学习中卷积神经网络有了一些新认识 和大家分享下 其实卷积神经网络并不是一项新兴的算法 早在上世纪八十年代就已经被提出来 但当时硬件运算能力有限 所以当时只
  • Java并发编程之设计模式

    同步模式之保护性暂停 1 定义 即 Guarded Suspension 用在一个线程等待另一个线程的执行结果 要点 有一个结果需要从一个线程传递到另一个线程 让他们关联同一个 GuardedObject 如果有结果不断从一个线程到另一个线
  • MIPI-DSI 协议深度解析-简单易懂协议详解

    1 MIPI MIPI 移动行业处理器接口 是 Mobile Industry Processor Interface 的缩写 MIPI 移动行 业处理器接口 是 MIPI 联盟发起的为移动应用处理器制定的开放标准 DCS DisplayC
  • vue项目history模式刷新404问题

    vue项目history模式部署到服务器后 根路径访问没有问题 但是进入其他功能再刷新页面就会出现404 因为你没在nginx或者apache配置上面加上重定向跳转 解决办法 只需要加上这段配置 nginx配置内容 location try
  • DNS详解

    1 背景 DNS 是 Domain Name System 的缩写 即域名系统 DNS可以理解是将域名 如 www baidu com 和IP地址进行相互映射的一个分布式数据库 人直接去记忆IP地址数串是相当困难的 像是电话号码 记忆常用的
  • VUE+js高德地图2.0API两幅地图联动同步缩放

  • 主机上连接到 vmware虚拟机的方式

    我们平时只有一台电脑 但是练习时需要有多台电脑 那么此时应该怎么办 答案是下载 vmware 可以在上面创建多台虚拟机 至于如何创建 不是本文的重点 下面先说说桥接是如何设置的 首先 进入配置好的虚拟机下面 选择 虚拟机 设置 网络适配器
  • NLP-实体&关系联合抽取-2021:GPLinker

    基础思路 关系抽取乍看之下是三元组 s p o s p o s p o 即subject pre
  • spi总线挂载多个设备的设备树描述

    内核版本 linux4 6 Vivado版本 201602 工程中用到很多spi控制的从设备 首先对FPGA工程的正确性验证一下 验证的设备树描述如下 spi e0006000 compatible xlnx zynq spi r1p6 r
  • 内存大页及基本块

    大页内存 透明大页和大页的关系 这两者最大的区别在于 标准大页管理是预分配的方式 而透明大页管理则是动态分配的方式 内存页的概念 内存页 page 内存的最小分配单元 page gt 一个应用程序至少要使用一个内存页 4096B 4k li
  • k8s学习(五)ReplicaSet的使用

    ReplicaSet ReplicaSet 的目的是维护一组在任何时候都处于运行状态的 Pod 副本的稳定集合 可确保指定数量的pod在任何设定的时间运行 因此 它通常用来保证给定数量的 完全相同的 Pod 的可用性 示例 1 nginx
  • C++基础之纯虚函数

    一 纯虚函数的定义 纯虚函数是一种特殊的虚函数 在许多情况下 在基类中不能对虚函数给出有意义的实现 而把它声明为纯虚函数 它的实现留给该基类的派生类去做 这就是纯虚函数的作用 C 中的纯虚函数 一般在函数名后使用 0作为此类函数的标志 前面