C++纯虚函数 virtual =0
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相关推荐
- C++ 第三章 纯虚函数Virtual报错
Virtual 后的函数=0则为纯虚函数 #include <iostream>using namespace std;class FA {public:void Func1() {pri ...
- C++ 学习之旅(16)——虚函数与纯虚函数virtual
关于虚函数的概念讲解,可以看这篇文章: https://blog.csdn.net/siwuxie095/article/details/71159414 以下用例子进行实际说明: #include ...
- 但并不从包含函数声明的接口派生_C++的虚函数和纯虚函数
虚函数:类成员函数前面添加virtual关键字,则该函数被称为虚函数. 纯虚函数:在虚函数的基础上,在函数末尾加上 = 0. class Animal {public: virtual void Sh ...
- (转)虚函数和纯虚函数区别
在面向对象的C++语言中,虚函数(virtual function)是一个非常重要的概念.因为它充分体现 了面向对象思想中的继承和多态性这两大特性,在C++语言里应用极广.比如在微软的MFC类库中,你 ...
- 静态联编,动态联编,类指针之间的关系,虚函数与多态性,纯虚函数,虚析构函数
1.静态联编,是程序的匹配,连接在编译阶段实现,也称为早期匹配.重载函数使用静态联编. 2.动态联编是指程序联编推迟到运行时进行,所以又称为晚期联编.switch语句和if语句是动态联编的例子. #i ...
- c语言中虚函数和纯虚函数,虚函数和纯虚函数的区别是什么?
虚函数和纯虚函数的区别:1.纯虚函数只有定义,没有实现:而虚函数既有定义,也有实现的代码.2.包含纯虚函数的类不能定义其对象,而包含虚函数的则可以. 相关推荐:<C++视频教程> 虚函数( ...
- 虚函数和纯虚函数的区别是什么?
虚函数(impure virtual) C 的虚函数主要作用是"运行时多态",父类中提供虚函数的实现,为子类提供默认的函数实现. 子类可以重写父类的虚函数实现子类的特殊化. 如下就 ...
- [C++] - 纯虚函数 抽象基类 接口类
翻译自:https://www.learncpp.com/cpp-tutorial/126-pure-virtual-functions-abstract-base-classes-and-inter ...
- c/c++入门教程 - 2.4.7 多态、函数地址晚绑定(重写,虚函数,纯虚函数,抽象类,虚析构,纯虚析构)
目录 4.7 多态 4.7.1 多态的基本概念(超级重要) 4.7.2 多态的原理刨析(超级重要) 4.7.2 多态案例一:计算器类 4.7.3 纯虚函数和抽象类 4.7.4 多态案例二 - 制作饮品 ...
最新文章
- 链表问题7——判断一个链表是否为回文结构
- Windows Phone 8 蓝牙标准
- chapter13 机器学习之利用PCA简化数据
- 深入理解分布式技术 - 分布式缓存实战_常见的坑及解决办法
- mysql数据库密码为空_注意MySQL数据库用户root密码为空
- 12123两小时没付款怎么办_交管12123支付宝小程序付款不了怎么办 交管12123支付宝缴费方法介绍[多图]...
- esp8266 eeprom_ESP8266_08基于flash的数据掉电保护
- 13.罗马数字转整数-LeetCode
- java交通灯英文文献,194关于单片机智能交通灯控制系统设计有关的外文文献翻译成品:基于单片机的智能交通控制系统(中英文双语对照)7...
- python拟合泊松分布_Python Numpy泊松分布
- 杀毒软件 McAfee 创始人自杀,75 年传奇人生画下句号
- win10 企业版 2016长期服务版激活
- 零厨艺也只需10分钟就能让厨房剩货大变身——牛肉饭
- FPGA的速度等级(speed grade)
- STM8S自学笔记之利用库函数点亮一个LED
- soul源码阅读 soul数据同步之nacos
- Android 图案解锁
- Lyapunov函数对微分方程稳定性的判别
- 利用ms16-032提权并打开3389端口
- python中re模块的安装_python库之re模块
热门文章
- C/C++/Java 的基本数据类型
- python中的id()函数及读取list的例子
- 【小松教你手游开发】【unity实用技能】计算目标物体是否在自己的扇形视野范围...
- 用python创建数据库监控平台(3)安装Python3.5
- lex/flex 笔记
- BAT脚本如何自动执行 adb shell 以后的命令
- 音频编码标准发展现状
- Window 2000 网络操作命令全释
- 实现对HDFS增删改查CRUD等操作
- mac 10.9.5 安装hadoop 1.2.1 运行wordcount