zoukankan      html  css  js  c++  java
  • C++: 多态 虚函数

    一.多态:

    1.多态是什么:具有不同功能的函数可以用同一个函数名

    2.静态多态:程序编译时决定,通过函数重载实现.

    3.动态多态:程序运行时决定,通过虚函数实现.

    二.虚函数:

    1.引入目的:可以通过基类指针或引用来访问基类和派生类中的同名函数(简化多态函数的调用).

            方法:先用基类指针指向该对象即可.

    2.重载与虚函数:

    重载处理的是同一层次上的同名函数问题(横向重载);

    而虚函数处理的是不同派生层次上的同名函数问题(可理解为纵向重载)(多态)

    3.虚析构函数:

     建议使用虚析构函数,以保证在撤销动态存储空间时能得到正确的处理.

    三.纯虚函数:

    1.作用:在基类中为其派生类保留一个函数的名字,以便派生类跟据需要对它进行定义.如果基类没有保留函数名字,则无法实现多态性.

    四.实例

    struct ResultBit
    {
        uint8_t  Level  : 3;
        uint8_t  Layer  : 5;
        uint8_t  Module : 8;
        uint16_t Code   : 16;
    };
    
    union Result
    {
        ResultBit  Bit;
        uint32_t   All;
    };
    
    class Restorer
    {
    public:
            virtual Result _rt Restore ( Result _in v ) = 0;
    //原型: virtual union const Restore ( union const & v ) = 0;
    //这是个纯虚函数,virtual表示虚函数,=0告诉编译系统"这是纯虚函数"
    //Restore ( union const & v ):函数及其参数
    //纯虚函数没有函数体
    //纯虚函数的作用(多态):在基类中为其派生类保留一个函数的名字,以便派生类根据需要对它进行定义.
    //多态:不同派生层次上的同名函数
    };
    typedef Restorer* RestorerPtr;
  • 相关阅读:
    海量的数据的处理
    leetcode(135)分发糖果
    leetcode(130)被围绕的区域
    排序算法
    leetcode(956)最高的广告牌
    kafka的配置
    kafka命令行
    leetcode(76)最小覆盖子串
    Vue开发全解
    idea eclipse 设置代理
  • 原文地址:https://www.cnblogs.com/cj2014/p/5038477.html
Copyright © 2011-2022 走看看