mfc 纯虚函数和抽象类
纯虚函数
抽像类 一、纯虚函数
虚函数为了重载和多态的需要,有时需要在基类中定义一个纯虚函数,代码部分在子类中加以实现。定义格式如下的函数我们称为纯虚函数:
virtual 返回类型 虚函数名(参数列表)=; 纯虚函数与空虚函数是有区别的;
二、抽像类
包含纯虚函数的类被称为抽像类。也叫虚基类,这种类不能直接生成对象,而只有被子类继承,并重写其虚函数后,才能使用。
三、作业:
阅读下面参考资料.
使用纯虚函数的原因:
、同“虚函数”;
、在很多情况下,基类本身生成对象是不合情理的。例如,动物作为一个基类可以派生出老虎、孔雀等子类,但动物本身生成对象明显不合常理。
//纯虚函数就是基类只定义了函数体,没有实现过程定义方法如下
// virtual void Eat() = 0; 直接=0 不要 在cpp中定义就可以了
//纯虚函数相当于接口,不能直接实例话,需要派生类来实现函数定义
//有的人可能在想,定义这些有什么用啊 ,我觉得很有用
//比如你想描述一些事物的属性给别人,而自己不想去实现,就可以定
//义为纯虚函数。说的再透彻一些。比如盖楼房,你是老板,你给建筑公司
//描述清楚你的楼房的特性,多少层,楼顶要有个花园什么的
//建筑公司就可以按照你的方法去实现了,如果你不说清楚这些,可能建筑
//公司不太了解你需要楼房的特性。用纯需函数就可以很好的分工合作了
虚函数和纯虚函数区别
观点一:
类里声明为虚函数的话,这个函数是实现的,哪怕是空实现,它的作用就是为了能让这个函数在它 的子类里面可以被重载,这样的话,这样编译器就可以使用后期绑定来达到多态了
纯虚函数只是一个接口,是个函数的声明而已,它要留到子类里去实现。
class A{
protected: void foo();//普通类函数
virtual void foo1();//虚函数
virtual void foo2() = ;//纯虚函数
} 观点二:
虚函数在子类里面也可以不重载的;但纯虚必须在子类去实现。通常我们把很多函数加上virtual,是一个好的习惯,虽然牺牲了一些性能,但是增加了面向对象的多态性,因为你很 难预料到父类里面的这个函数不在子类里面不去修改它的实现
观点三:
虚函数的类用于“实作继承”,继承接口的同时也继承了父类的实现。当然我们也可以完成自己的 实现。纯虚函数的类用于“介面继承”,主要用于通信协议方面。关注的是接口的统一性,实现由子类完成。一般来说,介面类中只有纯虚函数的。
观点四:
虚函数是为了继承接口和默认行为
纯虚函数只是继承接口,行为必须重新定义
mfc 纯虚函数和抽象类的更多相关文章
- C++学习基础十二——纯虚函数与抽象类
一.C++中纯虚函数与抽象类: 1.含有一个或多个纯虚函数的类成为抽象类,注意此处是纯虚函数,而不是虚函数. 2.如果一个子类继承抽象类,则必须实现父类中的纯虚函数,否则该类也为抽象类. 3.如果一个 ...
- C++基础(纯虚函数与抽象类)
C++基础之纯虚函数与抽象类 引言 纯虚函数在C++编程中的地位很重要,其关联到了设计模式中"接口"的概念. 语法 纯虚函数的语法: 1. 将成员函数声明为virtual 2. ...
- C++:纯虚函数与抽象类
5.4.3 纯虚函数和抽象类 纯虚函数是一个在基类中说明的虚函数,它在该基类中没有定义,但是要求在派生类中根据需要对它进行定义,或仍然说明为纯虚函数. 声明纯虚函数的一般格式是: virtual 函数 ...
- c++,纯虚函数与抽象类
1.纯虚函数的定义: (1)虚函数被“初始化”为0的函数.声明纯虚函数的一般形式是virtual 函数类型 函数名(参数表列) =0;(2)纯虚函数没有函数体:(3)最后面的“=0”并不表示函数返回值 ...
- C++复习:纯虚函数和抽象类
纯虚函数和抽象类 1基本概念 2抽象类案例 3抽象类在多继承中的应用 C++中没有Java中的接口概念,抽象类可以模拟Java中的接口类.(接口和协议) 3.1有关多继承的说明 工程上的多继承 被 ...
- 简单地说, cpp中的纯虚函数就是抽象类的具体实现
简单地说, cpp中的纯虚函数就是抽象类的具体实现.包含了纯虚函数的类就是抽象类.
- C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则
1 昨日回顾 2 多态的原理 1 要有继承 2 要有子类重写父类的虚函数 3 父类指针(或者引用)指向子类对象 (动态联编 虚函数表 3 证明vptr指针的存在 4 vptr指针在构造父类的时候是分步 ...
- c++-纯虚函数和抽象类
纯虚函数和抽象类 C面向接口编程和C多态 函数类型语法基础 函数指针做函数参数(回调函数)思想剖析 函数指针做函数参数两种用法(正向调用.反向调用) 纯虚函数 抽象类 抽象类基本概念 抽象类在多继承中 ...
- C++开发系列-纯虚函数和抽象类
概念 纯虚函数和抽象类 纯虚函数是一个在基类中说明的虚函数,在基类中没有定义,要求任何派生类都实现该函数. 纯虚函数为各派生类提供了一个公共界面(接口的封装和设计.软件的模块功能的划分) 纯虚函数说明 ...
随机推荐
- 页面可见性判断:document.hidden与visibilitychange事件
我们需要在特定的时候判断页面的显示状态,例如:当视频加载到可播放状态时,根据用户是否停留在当前页面来决定是否开始自动播放.页面的展示的状态的判断就需要用到html5新增的一个api:document. ...
- LeetCode题解之 Continuous Subarray Sum
1.题目描述 2.循环计算即可 3.代码 bool checkSubarraySum(vector<int>& nums, int k) { ){ return false ; } ...
- ubuntu下配置时间同步NTP
1参考文献: 1.鸟哥的Linux私房菜:第十五章.时间服务器: NTP 服务器(强烈建议看完) 2.http://www.crsay.com/wiki/wiki.php/server/centos/ ...
- 10分钟让你明白MySQL是如何利用索引的
一.前言 在MySQL中进行SQL优化的时候,经常会在一些情况下,对MySQL能否利用索引有一些迷惑. 譬如: MySQL 在遇到范围查询条件的时候就停止匹配了,那么到底是哪些范围条件? MySQL ...
- 如何创建只读权限oracle账户
1.创建角色 CREATE ROLE SELECT_ROLE 2.给角色分配权限 grant CREATE VIEW to SELECT_ROLE; grant CREATE SYNONYM to S ...
- [eclipse]添加python默认模板,在首行添加编码方式(# -*- coding: utf-8 -*-)
1.从eclipse的windows->preference 2.参照如下图,添加指定的utf-8编码方式
- 数据结构习题Pop Sequence的理解----小白笔记^_^
Pop Sequence(25 分) Given a stack which can keep M numbers at most. Push N numbers in the order of 1, ...
- Please select Android SDK解决办法
项目不能运行,提示如下 打开项目local.properties文件,查看sdk地址是否正确,注意区分大小写 如果sdk地址正确,那么点击File-Sync Project with gradle ...
- Docker技术入门与实战 第二版-学习笔记-9-Docker Compose 项目-3-Django项目实例
使用 Django 我们现在将使用 Compose 配置并运行一个 Django/PostgreSQL 应用.在此之前,先确保 Compose 已经安装. 1.通过编辑 Dockerfile文件来指定 ...
- Windows下安装Tensorflow—GPU版本
https://blog.csdn.net/weixin_39290638/article/details/80045236