一.多态:
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;