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;
  • 相关阅读:
    遗传算法求解旅行商(TSP)问题 -- python
    office 小技巧
    oracle创建dblink
    c# equals与==的区别
    两人之间的一些参数
    .net 枚举(Enum)使用总结
    SQL Server 日期的加减函数: DATEDIFF DATEADD
    jquery操作select
    AS3帮助手册
    Razor和HtmlHelper的使用意义
  • 原文地址:https://www.cnblogs.com/cj2014/p/5038477.html
Copyright © 2011-2022 走看看