zoukankan      html  css  js  c++  java
  • c++虚函数

      为了实现由一个基类派生出的多个子类,对于其中的某个功能,各个子类实现不同的操作,需要用到虚函数。

      如果将基类中的一个成员函数声明为虚函数(virtual),子类中的同名函数也成为虚函数,并且对基类版本形成覆盖。隐藏只需要是同名的标识符即可构成隐藏,而覆盖的条件非常严格。函数名、形参表、const必须一致,返回值也要一致(基本类型)或相符(类类型的指针或引用)。

      编译器遇到通过指向子类对象的基类指针调用基类中的虚函数时,与普通函数的处理不同,不会立刻生成调用代码,而会生成若干条指令,待程序运行时被执行。

      运行时执行如下动作:

      1. 根据基类指针指向的对象类型,找到目标对象中的虚函数表的指针(**);

      2. 通过虚函数表指针(**),找到虚函数的地址(*);

      3. 根据虚函数地址,执行虚函数代码。

      这种通过基类指针或引用最终调用子类是虚函数的现象,称为多态。

      如果子类中不存在覆盖版本,则执行基类中的虚函数。

      

  • 相关阅读:
    初识STM32标准库
    自己写库—构建库函数雏形
    使用寄存器点亮LED等
    新建工程---寄存器版
    什么是寄存器
    初识STM32
    ST-LINK驱动的安装
    MDK5使用技巧
    开发环境的搭建
    1行Python代码制作动态二维码
  • 原文地址:https://www.cnblogs.com/itit/p/3436679.html
Copyright © 2011-2022 走看看