概括的说多态就是“一个接口,多种方法”。
多态分为两种:
一、静态多态性(静态联编):程序调用函数的时候,具体使用哪个代码块由编译器已经决定了。这种在编译过程中就完成的联编叫静态联编。
函数重载、派生类方法的重写、模版函数都属于静态联编。
二、编译器无法在编译过程中完成的,必须在程序运行时完成选择,这叫动态联编。C++通过虚函数实现动态联编。
虚函数的意义(经典的两句话):
一、通过指针或者引用访问对象成员时,具体要访问哪个对象只取决于指针的类型,而与用什么对象给这个指针或引用无关。
二、在基类的函数成员前加上virtual关键字,使之成为虚函数,具体调用基类还是派生类的函数不再取决于指针或者引用的类型(动态联编的关键点),
而是取决于指针或者引用所指向的对象的类型。