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;…

Full Tank?

Full Tank? 最短路转载于:https://www.cnblogs.com/zhang1107/archive/2012/12/06/2806344.html

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;对有可能发生异常的地方做出预见性的…

win10查看端口占用

win10查看端口占用 1、CMD命令 netstat -ano|findstr 8080 查看8080端口占用的程序的PID 2、任务管理器管理&#xff0c;点击"详细信息"&#xff1b;根据PID查看相应的程序。 posted on 2019-08-21 09:54 凉云 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnb…

图像传感器之CMOS(2)

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

An internal error occurred during: Launching New_configuration.

新建工程&#xff0c;写的程序&#xff0c;用模拟器运行OK。 一旦在XML中run过一次后&#xff0c;再新建工程就不行啦&#xff0c;而且会报错An internal error occurred during: "Launching New_configuration".Path for project must have only one segment. p…

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…

用JAVA打开指定应用程序(软件),比如qq,浏览器

用JAVA打开指定应用程序(软件)&#xff0c;比如qq&#xff0c;浏览器。代码如下 public static void open(){if (java.awt.Desktop.isDesktopSupported()) {try {java.awt.Desktop dp java.awt.Desktop.getDesktop();if (dp.isSupported(java.awt.Desktop.Action.BROWSE)) {dp…

【HNOI】 lct tree-dp

【题目描述】给定2-3颗树&#xff0c;每个边的边权为1&#xff0c;解决以下独立的问题。 现在通过连接若干遍使得图为连通图&#xff0c;并且Σdis(x,y)最大&#xff0c;x&#xff0c;y只算一次。 每个点为黑点或者白点&#xff0c;现在需要删除一些边&#xff0c;使得图中的黑…

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

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

shell脚本自动备份MySQL数据库

脚本如下&#xff1a; #!/bin/bash #数据库IP dbserver127.0.0.1 #数据库用户名 dbuserroot #数据密码 dbpasswd123456 #数据库,如有多个库用空格分开 dbnamebrdb_jtkg_0222 brdb_jtkg_0425 #备份时间 backtimedate %Y%m%d-%H-%M #备份输出日志路径 logpath/home/mysqlbackup/e…

摈弃 Windows 低效率的工作方式,发掘 Linux 身上的 UNIX 气质

[原文链接] 摈弃 Windows 低效率的工作方式&#xff0c;发掘 Linux 身上的 UNIX 气质 我已经半年没有使用 Windows 的方式工作了。Linux 高效的完成了我所有的工作。 GNU/Linux 不是每个人都想用的。如果你只需要处理一般的事务&#xff0c;打游戏&#xff0c;那么你也许不需要…

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

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

glClearDepth

opengl里面的深度缓存 在现实生活中&#xff0c;一个实心物体挡在另外一个实心物体的前面&#xff0c; 后面的那个物体有部分会被遮盖掉 那么opengl里面如何模拟这个情况呢&#xff1f; 每个物体的每个像素都有一个深度缓存的值&#xff08;在0到1之间&#xff0c;可以想象成是…

frp对http协议应用

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