2019独角兽企业重金招聘Python工程师标准>>>

纯虚函数(pure virtual function)

class Screen
{
public:virtual void Show()=0;  // 普通的虚函数后面加上"=0"这样就声明了一个pure virtual function
};

在什么情况下使用纯虚函数(pure vitrual function)?

  • 当想在基类中抽象出一个方法,且该基类只做能被继承,而不能被实例化;

  • 这个方法必须在派生类(derived class)中被实现;

我们定义了一个类如下:

class CShape
{virtual void Show(){};
};

但没有CShape这种形状,因此我们不想让CShape这个类被实例化,我们首先想到的是将Show函数的定义(实现)部分删除如下:

class CShape
{virtual void Show();
};

当我们使用下面的语句实例化一个CShape时:

CShape cs;  //这是我们不允许的,但仅用上面的代码是可以通过编译(但link时失败)。

我们再来看看被继承的情况,我们需要一个CPoint2D的类,它继承自CShape.他必须实现基类(CShape)中的Show()方法。

其实使用最初的本意是让每一个派生自CShape的类,都要实现Show()方法,但时常我们可能在一个派生类中忘记了实现Show(),为了避免这种情况,pure virtual funcion发挥作用了。

转载于:https://my.oschina.net/wellsoschina/blog/335112

C++纯虚函数 virtual =0相关推荐

  1. C++ 第三章 纯虚函数Virtual报错

    Virtual 后的函数=0则为纯虚函数 #include <iostream>using namespace std;class FA {public:void Func1() {pri ...

  2. C++ 学习之旅(16)——虚函数与纯虚函数virtual

    关于虚函数的概念讲解,可以看这篇文章: https://blog.csdn.net/siwuxie095/article/details/71159414 以下用例子进行实际说明: #include ...

  3. 但并不从包含函数声明的接口派生_C++的虚函数和纯虚函数

    虚函数:类成员函数前面添加virtual关键字,则该函数被称为虚函数. 纯虚函数:在虚函数的基础上,在函数末尾加上 = 0. class Animal {public: virtual void Sh ...

  4. (转)虚函数和纯虚函数区别

    在面向对象的C++语言中,虚函数(virtual function)是一个非常重要的概念.因为它充分体现 了面向对象思想中的继承和多态性这两大特性,在C++语言里应用极广.比如在微软的MFC类库中,你 ...

  5. 静态联编,动态联编,类指针之间的关系,虚函数与多态性,纯虚函数,虚析构函数

    1.静态联编,是程序的匹配,连接在编译阶段实现,也称为早期匹配.重载函数使用静态联编. 2.动态联编是指程序联编推迟到运行时进行,所以又称为晚期联编.switch语句和if语句是动态联编的例子. #i ...

  6. c语言中虚函数和纯虚函数,虚函数和纯虚函数的区别是什么?

    虚函数和纯虚函数的区别:1.纯虚函数只有定义,没有实现:而虚函数既有定义,也有实现的代码.2.包含纯虚函数的类不能定义其对象,而包含虚函数的则可以. 相关推荐:<C++视频教程> 虚函数( ...

  7. 虚函数和纯虚函数的区别是什么?

    虚函数(impure virtual) C 的虚函数主要作用是"运行时多态",父类中提供虚函数的实现,为子类提供默认的函数实现. 子类可以重写父类的虚函数实现子类的特殊化. 如下就 ...

  8. [C++] - 纯虚函数 抽象基类 接口类

    翻译自:https://www.learncpp.com/cpp-tutorial/126-pure-virtual-functions-abstract-base-classes-and-inter ...

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

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

最新文章

  1. 链表问题7——判断一个链表是否为回文结构
  2. Windows Phone 8 蓝牙标准
  3. chapter13 机器学习之利用PCA简化数据
  4. 深入理解分布式技术 - 分布式缓存实战_常见的坑及解决办法
  5. mysql数据库密码为空_注意MySQL数据库用户root密码为空
  6. 12123两小时没付款怎么办_交管12123支付宝小程序付款不了怎么办 交管12123支付宝缴费方法介绍[多图]...
  7. esp8266 eeprom_ESP8266_08基于flash的数据掉电保护
  8. 13.罗马数字转整数-LeetCode
  9. java交通灯英文文献,194关于单片机智能交通灯控制系统设计有关的外文文献翻译成品:基于单片机的智能交通控制系统(中英文双语对照)7...
  10. python拟合泊松分布_Python Numpy泊松分布
  11. 杀毒软件 McAfee 创始人自杀,75 年传奇人生画下句号
  12. win10 企业版 2016长期服务版激活
  13. 零厨艺也只需10分钟就能让厨房剩货大变身——牛肉饭
  14. FPGA的速度等级(speed grade)
  15. STM8S自学笔记之利用库函数点亮一个LED
  16. soul源码阅读 soul数据同步之nacos
  17. Android 图案解锁
  18. Lyapunov函数对微分方程稳定性的判别
  19. 利用ms16-032提权并打开3389端口
  20. python中re模块的安装_python库之re模块

热门文章

  1. C/C++/Java 的基本数据类型
  2. python中的id()函数及读取list的例子
  3. 【小松教你手游开发】【unity实用技能】计算目标物体是否在自己的扇形视野范围...
  4. 用python创建数据库监控平台(3)安装Python3.5
  5. lex/flex 笔记
  6. BAT脚本如何自动执行 adb shell 以后的命令
  7. 音频编码标准发展现状
  8. Window 2000 网络操作命令全释
  9. 实现对HDFS增删改查CRUD等操作
  10. mac 10.9.5 安装hadoop 1.2.1 运行wordcount