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;