c++远征之多态篇——纯虚函数和抽象类、接口类

以下内容源于慕课网的学习整理,如有侵权,请告知删除。

1、纯虚函数

  • 没有函数体;
  • =0;
  • 即只有函数声明,而没有函数定义的虚函数,是纯虚函数。




2、抽象类

  • 概念:含有纯虚函数的类,叫抽象类。
  • 抽象类无法实例化对象
  • 抽象类的子类也可能是抽象类。



(1)只有抽象类的子类把抽象类的纯虚函数都给实现了,才能用子类来实例化对象






3、接口类

  • 概念:仅含有纯虚函数的类称为接口类。
  • 没有任何数据成员,只有成员函数,而且成员函数都是纯虚函数。


  • 接口类用来表达一种能力或协议。
  • 传参是子类。




(1)细节

  • 一个类可以继承接口类的同时也继承非接口类。
  • 一个类可以继承一个接口类,也可以继承多个接口类。
  • 可以使用接口类指针指向其子类对象,并调用子类对象中实现的接口类中纯虚函数。
  • 不能使用接口类实例化对象。

(2)接口类代码示例

#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;/*** 定义射击类:CanShut* 定义纯虚函数:aim、reload*/
class CanShut
{
public:virtual void aim() =0;virtual void reload() =0;
};/*** 定义枪类:Gun* 公有继承射击类* 实现成员函数:aim、reload*/
class Gun : public CanShut
{
public:virtual void aim(){cout << "Gun -- aim" << endl;}virtual void reload(){cout << "Gun -- reload" << endl;}
};/*** 定义含参函数射击:hunting* 调用参数的aim与reload函数*/
void hunting(CanShut* s)
{s->aim();s->reload();
}int main(void)
{// 实例化枪对象Gun* p=new Gun;// 调用含参函数hunting,将对象枪传入函数中hunting(p);// 释放内存delete p;p=NULL;return 0;
}




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

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

相关文章

W3 Total Cache+Hacklog Remote Attachment Upyun

2019独角兽企业重金招聘Python工程师标准>>> Hacklog Remote Attachment Upyun 是「荒野无灯」开发的WP插件&#xff0c;可以很方便的配合又拍云使用。通过这个插件&#xff0c;可以在添加媒体的时候上传至又拍云&#xff0c;对速度有极大的提升。 另外&#xff0c;…

VS2013崩溃,无法打开项目的解决方案

最近遇到VS2013&#xff0c;在打开解决方案时&#xff0c;报如下错误&#xff1a; “未找到与约束 ContractName Microsoft.Internal.VisualStudio.PlatformUI.ISolutionAttachedCollectionServiceRequiredTypeIdentity Microsoft.Internal.VisualStudio.PlatformUI.ISolutionA…

c++远征之多态篇——运行时类型识别(RTTI)

以下内容源于慕课网的学习整理&#xff0c;如有侵权&#xff0c;请告知删除。 1、RTTI&#xff08;Run-Time Type Information&#xff09;&#xff0c;运行时类型识别。 涉及typeid、dynamic_cast这两个知识点。RTTI技术可以通过父类指针&#xff0c;识别其所指向对象的真实数…

用c#写的一个局域网聊天客户端 类似小飞鸽

最后在公司实习&#xff0c;新人不给活干&#xff0c;就自己随便看看&#xff0c;了解一些DevExpress控件啊&#xff0c;编码规范啊之类的&#xff0c;自己就寻思着写一点点小东西练习练习 出于自己对c# socket这块不熟&#xff0c;就选择了这块&#xff0c;顺便可以进一步了解…

c++远征之多态篇——异常处理

以下内容源于慕课网的学习整理&#xff0c;如有侵权&#xff0c;请告知删除。 1、关于异常的一些概念 异常&#xff1a;程序运行期出现的错误。 数组下标越界&#xff1b;除数为0&#xff1b;内存不足&#xff1b;…… 异常处理&#xff1a;对有可能发生异常的地方做出预见性的…

图像传感器之CMOS(2)

转&#xff1a;http://www.elecfans.com/application/Military_avionics/2013/0531/319531.html 提高宇航级图像传感器生产能力 日前&#xff0c;在能量效率方面不断创新的安森美半导体公司已同斯坦福国际研究院&#xff08;SRI&#xff09;和波尔航天科技公司合作&#xff0c;…

c++远征之模板篇——友元函数、友元类

以下内容源于慕课网的学习整理&#xff0c;如有侵权&#xff0c;请告知删除。 一、友元函数 1、分类 全局函数——》友元全局函数 成员函数——》友元成员函数 2、关键字friend 友元全局函数 如下&#xff0c;利用friend修饰的函数&#xff0c;其参数应该是本类的引用或者指…

PHP通过session判断防止表单重复提交实例

PHP通过session判断防止表单重复提交实例 PHP通过session判断防止表单重复提交实例&#xff0c;当用户提交表单后&#xff0c;为防止重复操作&#xff0c;通过session来判断是否为初次提交&#xff0c;否则让他返回到之前表单页面。 当前表单页面is_submit设为0 1 SESSION_STAR…

c++远征之模板篇——静态数据成员,静态成员函数

以下内容源于慕课网的学习整理&#xff0c;如有侵权&#xff0c;请告知删除。 1、静态数据成员 &#xff08;1&#xff09;不同于普通的数据成员&#xff0c;静态数据成员在没有实例化时&#xff0c;它也是存在的&#xff08;即它是和类共存的&#xff09;&#xff1b; &…

c++远征之模板篇——运算符重载

以下内容源于慕课网的学习整理&#xff0c;如有侵权&#xff0c;请告知删除。 一、运算符重载的概念 给原有的运算符赋予新的功能。比如下面的截图&#xff0c;本来加号并不具备坐标的相加的功能&#xff0c;但是通过运算符重载可以实现该功能。 二、运算符重载的本质 本质是…

frp对http协议应用

前言 frp是一个开源的项目, 可用于内网穿透的高性能的反向代理应用&#xff0c;支持 tcp, udp 协议&#xff0c;为 http 和 https 应用协议提供了额外的能力&#xff0c;且尝试性支持了点对点穿透。 github地址&#xff1a;https://github.com/fatedier/frp 此处对http的应用做…

树形列(无限级联下拉列的曲线版本)

先上效果图&#xff1a; 1、列表 - 列表设置 - 创建栏&#xff0c;“类型”选择“托管元数据”&#xff0c;如下图&#xff1a; 2、选中“托管元数据”后&#xff0c;可以到下面编辑需要的树形啦&#xff1a; 3、编辑好&#xff0c;确定&#xff0c;搞定&#xff1b;可以到列表…

c++远征之模板篇——函数模板、类模板

以下内容源于慕课网的学习整理&#xff0c;如有侵权&#xff0c;请告知删除。 函数模板&#xff08;vs模板函数&#xff09; 1、为什么需要模板&#xff1f; 函数体相同&#xff0c;只是类型不一样而已。那么能否把数据的类型当做参数传递呢&#xff1f;肯定是可以的&#xff0…

c++远征之模板篇——标准模板库(STL)

以下内容源于慕课网的学习整理&#xff0c;如有侵权&#xff0c;请告知删除。 常见的设计模板 1、vector&#xff0c;向量 &#xff08;1&#xff09;本质是对数组的封装&#xff1b; &#xff08;2&#xff09;能够在常数时间内完成读取&#xff1b; &#xff08;3&#xf…

数据结构探险——队列篇

以下内容源于慕课网的学习整理&#xff0c;如有侵权&#xff0c;请告知删除。 1、什么是队列&#xff1f; &#xff08;1&#xff09;先入先出的模型&#xff08;FIFO&#xff09;。 &#xff08;2&#xff09;队头&#xff0c;队尾。 &#xff08;3&#xff09;细分为普通队…

数据结构与算法之冒泡排序

转载于:https://www.cnblogs.com/yakun/p/3634457.html

数据结构探险——栈篇

以下内容源于慕课网的学习整理&#xff0c;如有侵权&#xff0c;请告知删除。 1、栈要素 栈底&#xff08;不变&#xff09;、栈顶&#xff08;随着入栈和出栈而改变&#xff09; 2、栈机制的实现 &#xff08;1&#xff09;栈的相关机制 判断栈的空满&#xff1b;入栈、出栈…

windows下修改tomcat的startup.bat脚本文件后台运行

1、修改startup.bat文件 rem Get remaining unshifted command line arguments and save them in the set CMD_LINE_ARGS :setArgs if ""%1"""""" goto doneSetArgs set CMD_LINE_ARGS%CMD_LINE_ARGS% %1 shift goto setArgs :doneSet…

开源框架:CocoaPods 安装学习教程

转载 开源框架:CocoaPods 引言: CocoaPods是一个可以帮你集中管理第三方库的开源项目,运行在Ruby的环境下,基于GitHub托管优势,你可以很方便的查阅目前依赖于CocoaPods的资源. 并且,CocoaPods是可靠,稳定,安全的.可以为你在使用第三方库资源时节省大部分的配置和部署时间.更专心…

SESSION 回收机制

session.gc_maxlifetime session.gc_probability session.gc_divisor session.gc_divisor 与 session.gc_probability 合起来定义了在每个会话初始化时启动 gc&#xff08;garbage collection 垃圾回收&#xff09;进程的概率。此概率用 gc_probability/gc_divisor 计算得来…