c++深入理解虚函数

虚函数的使用方法:

(1)在基类用virtual声明成员函数为虚函数。这样就可以在派生类中重新定义此函数,为它赋予新的功能,并能方便被调用。
在类外定义虚函数时,不必在定义virtual

(2)在派生类中重新定义此函数,要求函数名,函数类型,函数参数个数和类型全部与基类的虚函数相同,并根据派

生类的需要重新定义函数体。

c++规定,当一个成员函数被声明为虚函数后,其派生类的同名函数都自动成为虚函数。因此在派生类重新声明该

虚函数时,可以加virtual,也可以不加,但习惯上一般在每层声明该函数时都加上virtual,使程序更加清晰。

如果再派生类中没有对基类的虚函数重新定义,则派生类简单的继承起基类的虚函数。

(3)定义一个指向基类对象的指针变量,并使它指向同一类族中需要调用该函数的对象。

(4)通过该指针变量调用此虚函数,此时调用的就是指针变量指向的对象的同名函数。

例子

转载于:https://www.cnblogs.com/inception6-lxc/p/8409716.html

C++深入理解虚函数相关推荐

  1. 第十四周 程序阅读,理解虚函数与纯虚函数

    /* * 程序的版权和版本声明部分 * Copyright (c)2012, 烟台大学计算机学院学生 * All rightsreserved. * 作者: 李洋 * 完成日期: 2013年 5 月 ...

  2. C++多态中虚函数的深入理解

    c++中动态多态性是通过虚函数来实现的.静态多态性是通过函数的重载来实现的,在程序运行前的一种早绑定,动态多态性则是程序运行过程中的一种后绑定.根据下面的例子进行说明. #include <io ...

  3. java 析构函数_C++虚函数

    码字不易,欢迎给个赞! C++虚函数是多态性实现的重要方式,当某个虚函数通过指针或者引用调用时,编译器产生的代码直到运行时才能确定到底调用哪个版本的函数.被调用的函数是与绑定到指针或者引用上的对象的动 ...

  4. C++ 虚函数和虚继承解析

    本文针对C++里的虚函数,虚继承表现和原理进行一些简单分析,有不对的地方请指出.下面都是以VC2008编译器对这两种机制内部实现为例. 有喜欢或者想学习C/C++的朋友加一下我的C/C++交流群815 ...

  5. C++ 虚函数个人理解

    C++中的虚函数指的是class类中加上了关键字virtual的函数. 虚函数的意义在于动态绑定,也就是说父类指针可以调用子类的函数实现,示例如下: #include "stdio.h&qu ...

  6. 深入浅出理解c++虚函数

    深入浅出理解c++虚函数 记得几个月前看过C++虚函数的问题,当时其实就看懂了,最近笔试中遇到了虚函数竟然不太确定,所以还是理解的不深刻,所以想通过这篇文章来巩固下. 装逼一刻: 最近,本人思想发生了 ...

  7. C++虚函数---我的理解

    先了解一些基础知识 1.构造函数和析构函数一般是公有成员,否则该类不能实例化 2.类成员默认访问权限是private类型(strcut默认访问权限是public) 3.析构函数一般是虚函数,否则可能会 ...

  8. 重新学习c++--理解引用、智能指针、虚函数、模板、容器

    最近几年用c和python比较多,上次用c++写程序已经是几年前的事情了.温故而知新,是时候重新学习下c++了. C++可以分成四大块去理解: C c++仍以C为基础,区块blocks.语句state ...

  9. 理解虚基类、虚函数与纯虚函数的概念

    引言 一直以来都没有写过一篇关于概念性的文章,因为我觉得这些概念性的东西书本上都有并且说的也很详细写来也无用,今天突发奇想想写 一写,下面就和大家讨论一下虚基类.虚函数与纯虚函数,一看名字就让人很容易 ...

最新文章

  1. k-d tree算法的研究
  2. python主要运用于-python主要应用领域有哪些?看这一篇就够了
  3. Python Django 可变参数代码示例
  4. pyecharts第三节、仪表盘
  5. 使网页成黑白色调的滤镜(转)
  6. Spring Boot笔记-普通异常错误截取及构造错误页面
  7. (软件工程复习核心重点)第十二章软件项目管理-第四节:软件配置管理和能力成熟度模型
  8. java jdk 8 中文文档
  9. js排序的时间复杂度_各种排序算法时间复杂度
  10. 美国11月PMI现回落 市场关注10月PCE通膨数据
  11. wordpress 如何添加Canonical 标签(不通过插件)
  12. java fx svg 图像 缩放 控件,支持调整SVG图像大小!Aspose.Imaging v19.11新功能示例演示!...
  13. python turtle画动物_用python画简单的动物
  14. 数值计算笔记之非线性方程的求解(一)二分法
  15. IOT的核心—无线通讯模块
  16. tfw文件如何导入cad_基于TFW影像坐标信息在CAD中插入正射影像的方法探讨
  17. C语言 有五个人坐在一起问第五个人多少岁?
  18. 对于技术岗位而言,开发岗累还是算法岗累呢?
  19. 有孚专有云如何助力高校数智化转型
  20. F - Censor SCU - 4438(栈 + hash)

热门文章

  1. css实现左边div固定宽度,右边div自适应撑满剩下的宽度
  2. http协议的状态码
  3. 专属自己的二维游戏引擎【二】
  4. SQLAlchemy 用于 MySQL创建表时的bug修正
  5. was web 服务器性能测试,was web 服务器性能测试
  6. websphere内存溢出
  7. 数组中子数组运算常见写法
  8. cmake 版本 arm_尝试使用CMake构建Qt+Pytorch简单应用
  9. javascript对象、类与原型链
  10. Unity--------------------万向锁的概念