C++ 纯虚函数介绍
C++纯虚函数介绍
纯虚函数是在基类中声明的虚函数,在基类中没有定义,但是要求任何派生类(子类)都要定义该虚函数自己的实现方法。
基类中实现纯虚函数方法在函数原型后面加一个等于0.
一旦一个类中有纯虚数,就不能生成这个类的对象。这个类就是抽象类了。抽象类不能用来生成对象,主要目的是用来统一管理子类对象。
- 含有纯虚函数的类是抽象类,不能用来生成该类的对象,主要用于当做基类,用来生成子类。
- 子类中必实现基类中的纯虚函数。
class Human {public://声明成纯虚函数virtual void eat() = 0 ;//纯虚函数,没有函数体,只有函数声明,virtual 必须加,否则报错。
};
class Man : public Human //表示Men是Humen的子类
{public:virtual void eat2() override {};//子类中必须实现纯虚函数
};//类结尾一定要分号
Human human;//报错,Human *p = new Human:////报错,Human* p = new Man;p->eat2();//调用Man中的eat2.
C++ 纯虚函数介绍相关推荐
- C++ 虚函数和纯虚函数
C++中这两个概念不容易区分. 首先这两个函数都是为了方便使用多态这种面向对象的特性.下面将介绍两个函数的不同点. 虚函数: 一个类中定义了虚函数,通过指向派生类的基类指针,访问派生类中同名覆盖成员函 ...
- 虚函数和纯虚函数的区别
首先:强调一个概念 定义一个函数为虚函数,不代表函数为不被实现的函数. 定义他为虚函数是为了允许用基类的指针来调用子类的这个函数. 定义一个函数为纯虚函数,才代表函数没有被实现. 定义纯虚函数是为了实 ...
- C++ 虚函数和纯虚函数的区别
首先:强调一个概念 定义一个函数为虚函数,不代表函数为不被实现的函数. 定义他为虚函数是为了允许用基类的指针来调用子类的这个函数. 定义一个函数为纯虚函数,才代表函数没有被实现. 定义纯虚函数是为了实 ...
- 纯虚函数能为private吗?
我们把一个仅仅含有纯虚函数的类称为接口,我们也好像已经习惯了将这个接口中的所有纯虚函数全声明为public,而且按照这样的设计,一切都工作得不错.比如COM正是这样做的,它的接口中几乎不会存在priv ...
- python虚函数_虚函数和纯虚函数的区别
首先:强调一个概念 定义一个函数为虚函数,不代表函数为不被实现的函数. 定义他为虚函数是为了允许用基类的指针来调用子类的这个函数. 定义一个函数为纯虚函数,才代表函数没有被实现. 定义纯虚函数是为了实 ...
- 虚函数、纯虚函数、虚继承、多继承
来源:http://www.tnove.com/?p=57 C++的一个特征是多太,其中多态主要表现在 1.编译时多态 函数overload实现 2.运行是多态 虚函数override实现 其中虚 ...
- C++ day24 继承(四)抽象基类,纯虚函数,protected
文章目录 关键字protected(带来方便同时带来危险,最好不用) 抽象基类和纯虚函数(is-a关系用公有继承实现有时候也不太合适) 用圆和椭圆的笨拙派生为例,挑拨is-a和公有继承的搭档关系 替代 ...
- c++ 虚函数多态、纯虚函数、虚函数表指针、虚基类表指针详解
文章目录 静态多态.动态多态 虚函数 哪些函数类型不可以被定义成虚函数? 虚函数的访问方式 析构函数中的虚函数 虚函数表指针 vptr 多继承下的虚函数表 虚基类表指针 bptr 纯虚函数 抽象类 虚 ...
- 栈内存 ,堆内存区别 C++ 动态内存 == 与equal区别 复合函数奇偶性 三角函数转换公式: 虚函数和纯虚函数: C++ 中的运算符重载 数据封装,数据抽象 C++ 接口(抽象类
目录 栈内存 ,堆内存区别 C++ 动态内存 == 与equal区别 复合函数奇偶性 三角函数转换公式: 虚函数和纯虚函数: C++ 中的运算符重载 数据封装,数据抽象 C++ 接口(抽象类): #和 ...
最新文章
- python登录代码思路_用python登录Dr.com思路以及代码分享
- Spring进行表单验证
- 网络推广专员如何通过社交能力扩宽外链渠道助力网络推广?
- 易语言操作mysql数据库
- 库函数设计:关于文件类打开操作函数不自动创建不存在的父目录问题
- 华硕无线路由打印机服务器,享受DIY的快乐 篇四:当普通打印机遇上智能路由器——网络打印机配置教程(以华硕AC66U B1为例)...
- 专科 java转go 翱翔之路(二)基础语法:匿名组合,方法,接口,map,json,异常处理,channel管道,select用法
- 2018-11-02 在代码中进行中文命名实践的短期目标
- Scikit-Learn 新版本发布!一行代码秒升级
- python自动化开发-[第十四天]-javascript(续)
- 学python需要什么基础-学习Python需要哪些基础知识?
- C语言制作简单计算器
- 一款优秀的中文识别库——ocr
- 给影像添加alpha通道(透明度)
- FlinkSql系列5之 Regular Join
- 【FFmpeg】使用 ffmpeg 软件让视频旋转适当角度(亲测有效)
- 你知道 biangbiang 面和编码有什么关系吗?万字长文,手拉手带你一步步认识编码
- 一个程序猿眼中的国内主流地图api
- Ubuntu下使用opencv完成图像程序编程操作
- 银联--网联--聚合支付