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

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

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

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

      运行时执行如下动作:

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

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

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

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

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

      

  • 相关阅读:
    数字和字母交替打印
    日期和字符串的转化
    redis简介
    管理MySQL的命令
    创建mysql数据表成功
    微信账号 echo_server 的实现
    html5 画个圈
    php练习1
    人生十大点
    养生“六伤”、“十二莫”、“十二少”
  • 原文地址:https://www.cnblogs.com/itit/p/3436679.html
Copyright © 2011-2022 走看看