纯虚函数与纯虚类
来源:互联网 发布:linux经典书籍推荐 编辑:程序博客网 时间:2024/05/17 02:29
什么是纯虚函数
纯虚函数的语法
1. 将成员函;数声明为virtual
2. 后面加上=0
3. 该函数没有函数体
例如
class CmdHandler{ public: virtual void OnCommand(char * cmdline)=0;};
含有纯虚函数的类,称为抽象类(或称纯虚类)
例如,CmdHandler中有一个纯虚函数OnCommand(),因此,它是纯虚类
抽象类不能被实例化,既无法创建该对象
CmdHandler ch;//编译错误 !!CmdHandler * p =new CmdHandler();//编译错误!
问题:不能被实例化,还定义这个类做什么用???
抽象类/纯虚函数的实际用途,充当的“接口规范”
(相当于Java中的Interface语法)
(用于替代C中的回调函数的用法)
接口规范,凡是遵循此规范的类,都必须实现指定的函数接口,通常是一系列接口
比如
class CmdHandler{ public: virtual void OnCommand(const char * cmdlin;e)=0;}
可以理解为:凡是遵循CmdHandler规范的类,都必须实现指定的函数接口,OnCommand()
实例演示
项目需求:用户输入一行命令,按回车完成输入。要求解析命令输入,并且处理
设计:
CmdInput:用于接收用户输入
CmdHandler:规定一系列函数接口
MyParser:实际用于解析处理的类
#include "CmdInput.h"#include "MyParser.h"int main(){ CmdInput input; MyParser parser; input.SetHandler(&parser); input.Run(); return 0;}
总结:
1. 如何定义一个纯虚函数
2. 抽象类的实质作用:接口规范
因为它只代表了一个规范,并没有具体实现,所以它不能被实例化
3. 抽象类通常被多重继承
比如,一个普通的类,实现了多套接口规范,又继承于原有的父类
4. 抽象类的析构函数应该声明为virtual,因为它是被设计用于继承的
0 0
- 纯虚函数与纯虚类
- 纯虚函数与虚基类
- 虚函数与纯虚函数
- 虚函数与纯虚函数区别
- 虚函数与纯虚函数区别
- C++ 虚函数与纯虚函数
- 虚函数与纯虚函数
- 虚函数与多态性、纯虚函数
- 虚基类、虚函数与纯虚函数
- 虚函数与纯虚函数
- 虚函数与纯虚函数区别
- 虚函数与纯虚函数
- 虚函数与多态性 纯虚函数
- 虚函数与纯虚函数
- 虚函数与纯虚函数
- 虚函数与多态性/纯虚函数
- 虚函数与纯虚函数区别
- 虚函数与纯虚函数
- 【Git/Github学习笔记】ubuntu系统下使用git命令与windows下的差别
- java字符串操作
- 雅虎网站性能优化-34条黄金守则
- VB6 Advanced Filter Function
- Android5.0+(NavigationView)
- 纯虚函数与纯虚类
- android note
- POJ 2752
- mysql远程登录及修改用户密码
- Pytyhon 爬虫-爬取阿里旅行特价机票信息(2)
- C#读取系统安装的字体的方法
- 关于Bootstrap(二)
- nodejs-express4.X框架路由中获取参数值方法
- JQuery各种点击事件的区别