下面看看一个跟虚函数相关的几个名词:

抽象类:

含有纯虚函数的类,称作抽象类。

抽象类是不能实例化的,就是不能定义抽象类的对象,但是可以定义抽象类的指针变量。

抽象类往往是对问题领域进行分析和设计以后得出的一个抽象概念,是对一系列看上去不太相同,但是本质上却是相同的具体概念的一个抽象。

抽象基类:

抽象类可以在继承树的任意位置(顶部、中间、末尾),然而一个抽象类在继承树的尾部不太可能,也不应该这么设计,因为那是去了作为抽象类的意义。

抽象类处在继承树的顶部时就称此抽象类为抽象基类。

抽象类也可以在继承树的中间,是因为他可以有自己的定义的纯虚函数,同时实现其父类提供的纯虚函数接口。

对于继承树中还有几个基本的概念。当一个类A继承另外一个类B时;类A称为导出类、继承类、子类;类B称为父类、基类或超类;

虚函数:

(微软官方给出的解释)虚函数是指一个类中你希望重载的成员函数,当你用一个基类的指针或者是引用指向一个继承类的对象时,你调用一个虚函数,实际上调用的是继承类的版本。

纯虚函数:

只提供接口,没有实现。

纯虚函数在基类中是没有实现的,定义它仅仅是为了实现动态绑定而提供的一个接口,起到一个规范的作用。

规范是什么呢?那就是继承这个类的派生类中必须实现这个函数。可以反过来想,如果派生类不进行对父类纯虚函数的实现,那怎么动态绑定啊,难道要绑定一个没有实现(仅仅是一个声明的、没有实质作用)的函数么?

维基百科(Wikipedia):Virtual function的解释

继承关系引进虚函数给Dll导出带来的一种机制

C++中的DLL导出类之后对于维护和修改很可能遭遇Dll Hell

类与类之间的几种XML关系

有别于C++继承关系_窗口子类化1

有别于C++继承关系_窗口子类化2

类的重载、重写、覆盖---调试其中的例子---多么痛的领悟

动态绑定和静态绑定的几种不同形式

虚函数与动态绑定

类的垂直关系中,如何把握纯虚函数相关推荐

  1. C++中为什么要引入抽象基类和纯虚函数?

    为什么要引入抽象基类和纯虚函数? 主要目的是为了实现一种接口的效果. 抽象类是一种特殊的类,它是为了抽象和设计的目的为建立的,它处于继承层次结构的较上层. ⑴抽象类的定义:带有纯虚函数的类为抽象类. ...

  2. 第十三周项目三-形状类族中的纯虚函数

    /* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All rights reserved *文件名称:123.cpp *作 者:王蕊 *完成日期:2016年6月1日 *版 本 ...

  3. C++引入抽象基类和纯虚函数的作用和目的

    为什么要引入抽象基类和纯虚函数? 主要目的是为了实现一种接口的效果. 原文链接:https://blog.csdn.net/weibo1230123/article/details/82014322 ...

  4. C++ day24 继承(四)抽象基类,纯虚函数,protected

    文章目录 关键字protected(带来方便同时带来危险,最好不用) 抽象基类和纯虚函数(is-a关系用公有继承实现有时候也不太合适) 用圆和椭圆的笨拙派生为例,挑拨is-a和公有继承的搭档关系 替代 ...

  5. C++之抽象基类与纯虚函数

    // Vitual_Base.cpp : Defines the entry point for the console application. //抽象基类与纯虚函数#include " ...

  6. 【C++】C++类的学习(五)——纯虚函数与抽象类

    [fishing-pan:https://blog.csdn.net/u013921430转载请注明出处] 前言 在前面的博客中讲到了虚函数,今天讲述一种特别的虚函数--纯虚函数,以及与之相关的抽象类 ...

  7. python虚函数_Python进阶话题杂谈(十三)纯虚函数与抽象基类

    纯虚函数与抽象类都是Python面向对象中重要的编程范式,用于对继承类做强制性接口实现约定. abc模块包含了一系列与抽象基类与纯虚函数相关的方法.Python中通过修改元类进行抽象基类的设定.这里P ...

  8. 虚函数与纯虚函数以及虚函数表之间的关系

    1.虚函数 简单地说,那些被virtual关键字修饰的成员函数,就是虚函数.C++中虚函数的作用主要是实现多态机制.所谓多态就是用父类指针指向子类对象,然后通过父类指针调用实际子类的成员函数,这种技术 ...

  9. c++ 虚函数多态、纯虚函数、虚函数表指针、虚基类表指针详解

    文章目录 静态多态.动态多态 虚函数 哪些函数类型不可以被定义成虚函数? 虚函数的访问方式 析构函数中的虚函数 虚函数表指针 vptr 多继承下的虚函数表 虚基类表指针 bptr 纯虚函数 抽象类 虚 ...

最新文章

  1. linux常用命令汇总
  2. 直播系统开发:功能创新提升用户留存
  3. Homestead 集成开发环境配置
  4. sql server 2005 sa登录失败解决方法
  5. 双系统,重装windows后修复linux的grub启动
  6. linux gcc march arch,Gcc的spec中arch什么的指定
  7. Android之图片边显示模糊原因
  8. java程序输出88的0 1矩阵_《剑指Offer》Java实现--顺时针打印矩阵
  9. 快速上手Tomcat
  10. Qt调用工业相机之映美精相机
  11. 拳皇97用什么计算机语言编写,拳皇97这几个人物非常适合新手,用来打电脑可轻松通关...
  12. c++编程迷宫小游戏
  13. 教你制作第一个C++游戏!#1 引入
  14. 新手提问!求解答QAQADODB.Recordset 错误 #x27;800a0bb9#x27; 参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
  15. Gradle配置文件解决你的问题。
  16. 如何选择智能车牌识别摄像机
  17. Dynamics CRM 数据迁移工具DataMigrationUtility
  18. emacs官方中文手册
  19. 手机上怎么打字才能快?
  20. ElasticSearch - CURD

热门文章

  1. linux 下 svn的安装和使用
  2. 微信备注加个b什么意思_B站开通微信视频号,这意味着什么?!
  3. C语言学习笔记---指针和数组
  4. NYOJ-布线问题(最短路)
  5. C++:如何更改visual studio 2017的主题颜色?
  6. Ubuntu环境搭建一:安装tftp服务器程序
  7. Nhibernate与代码生成器介绍(转载)
  8. Intellij IDEA 2017 如何导入 GitHub 中的项目
  9. Hadoop入门扫盲:hadoop发行版介绍与选择
  10. 如何用轻量协作工具做bug管理