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

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

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

  1. C++多态(二)——纯虚函数、抽象类

    本篇涉及内容: 纯虚函数 抽象类 纯虚函数: 1)应用场景: 在多态中,通常父类中的虚函数是无意义的,一般情况下都会被子类重写,此时可以将父类中的这些虚函数改为纯虚函数. 2)纯虚函数语法:virtu ...

  2. <C++>多态之纯虚函数与抽象类,学习不一样的析构函数

    在自己的世界里独善其身,在别人的世界顺其自然 ✨写在前面         书接上文,  今天继续学习多态的内容.上文提到了虚函数,那么今天就来讲讲什么是纯虚函数,抽象类和纯虚函数关联紧密,所以也学习一 ...

  3. C++ 多态之纯虚函数和抽象类01

    纯虚函数的语法, virtual void func() = 0; 如果类中有了纯虚函数, 那么这个类也成为抽象类 抽象类无法实例化对象 继承了抽象类的子类,必须要重写父类中的纯虚函数,否则的话,子类 ...

  4. 9-2:C++多态之纯虚函数和抽象类以及接口继承和实现继承

    文章目录 (1)纯虚函数和抽象类的概念 (2)抽象类的意义 (3)接口继承与实现继承 (1)纯虚函数和抽象类的概念 如果一个类的虚函数后面写上=0,同时不写它的实现,那么这样的虚函数称之为纯虚函数,包 ...

  5. c++入门(多态and纯虚函数and抽象类)

    文件名:<1> shape.h :<2> circle.h :<3> circle.cpp :<4> rectangular.h :<5> ...

  6. C++_类和对象_C++多态_纯虚函数和抽象类---C++语言工作笔记072

    然后我们再来看一下c++中的抽象类,以及纯虚函数是什么意思. 可以看到如果类中有纯虚函数,那么这个类,就可以称为抽象类. 抽象类,是无法实例化,跟java一样,子类继承抽象类,必须要重写抽象类中的方法 ...

  7. c/c++入门教程 - 2.4.7 多态、函数地址晚绑定(重写,虚函数,纯虚函数,抽象类,虚析构,纯虚析构)

    目录 4.7 多态 4.7.1 多态的基本概念(超级重要) 4.7.2 多态的原理刨析(超级重要) 4.7.2 多态案例一:计算器类 4.7.3 纯虚函数和抽象类 4.7.4 多态案例二 - 制作饮品 ...

  8. C++学习12:C++多态、虚函数、虚析构函数、纯虚函数、抽象类

    一 多态概述 C++中的多态分为静态多态和动态多态.静态多态是函数重载,在编译阶段就能确定调用哪个函数.动态多态是由继承产生的,指同一个属性或行为在基类及其各派生类中具有不同的语义,不同的对象根据所接 ...

  9. C++基本概念复习之二:多重继承、虚继承、纯虚函数(抽象类)

    一.多重继承: #include <iostream> using namespace std; class Horse { public: Horse(){cout<<&qu ...

最新文章

  1. Social learning With Bayesian Agent and Random Decision Making
  2. php theme_path,PHP_Yii2主题(Theme)用法详解,本文实例讲述了Yii2主题(Theme) - phpStudy
  3. log4jdbc mysql jdbc_spring boot 集成log4jdbc 查看完整sql
  4. android so readelf.exe,android ndk中的工具使用
  5. a73*2+a53*2指的是什么_什么言四字词
  6. 哈工大博士历时半年整理的《Pytorch常用函数函数手册》开放下载!内含200余个函数!...
  7. 从零开始学前端:复习课程 --- 今天你学习了吗?(CSS:Day11)
  8. 客厅计算机笔记本cpu,我的家庭娱乐中心,适合客厅的 HTPC(家庭影院电脑)
  9. WPF教程(三十四)Hello, bound world!
  10. C++多线程 - 无锁编程
  11. 幻影机器人庄园参观路线_上海幻影机器人庄园攻略,上海幻影机器人庄园门票/游玩攻略/地址/图片/门票价格【携程攻略】...
  12. 魔兽世界服务器维护有哪些内容,魔兽世界wow服务器实装维护公告内容详情介绍_魔兽世界维护公告_快吧游戏...
  13. 网格计算, 云计算, 集群计算, 分布式计算, 超级计算
  14. Linux中将多块新硬盘合并成一个,挂载到/data目录下
  15. 敏捷培训: 如何使培训产生共鸣?
  16. 微信小程序真机调试连接不到后台服务器,解决微信小程序wepy真机预览跟本地表现不一样,数据变化了视图没变化...
  17. Python3 根据m3u8下载视频,批量下载ts文件并且合并
  18. NaN是什么? isNaN()/Number.NaN
  19. 工作日志之Sonar扫描错误处理-Sonar扫描结果入库 java.sql.BatchUpdateException: Incorrect string value: '\xF3\xA3\xAC\xB
  20. c语言字符substr,c substr()字符函数的使用方法

热门文章

  1. ajax-简单参数方法实现阴影效果
  2. 数据结构与算法 Python语言描述 笔记
  3. RabbitMQ 安装与简单使用
  4. Eclipse高级使用技巧
  5. Linux tee的花式用法和pee
  6. Android 基于注解IOC组件化/模块化的架构实践
  7. RabbitMQ实例教程:发布/订阅者消息队列
  8. 简单解释什么是 依赖注入 和 控制反转
  9. 从Android源码的角度分析Binder机制
  10. 前端每周清单第 34 期:Vue 现状盘点与 3.0 展望,React 代码迁移与优化,图片优化详论...