运行期多态
运行期多态的设计思想要归结到类继承体系的设计思想上去,对于相关功能的对象的集合,我们总希望能够抽象出他们共有的功能的集合,在基类中将这些功能声明为虚接口(虚函数),然后由子类继承类去重写这些虚接口,以实现子类特有的功能。
总结:运行期多态通过虚函数发生于运行期
优点
设计中重要的特性,对客观世界的直觉认识
能够处理同一继承体系下异质类集合
缺点
运行期间进行虚函数的绑定,提高了程序的运行时开销
庞大的类继承层次,对接口的修改易影响类继承层次
由于虚函数在运行期间确定,所以编译器无法对虚函数优化
编译器多态
对于模板参数而言,多态是通过模板具体和函数重载实现的,不同的模板具体导致调用不同的函数,这就是编译器多态。相较于运行期多态,实现编译器多态之间的类不需要继承体系,约束他们的是隐式接口。
缺点
代码调试带来困难
无法实现模板的额分离编译,当工程很大时,编译时间不可小觑
无法处理异质类对象的集合
名词解释
函数重写:当子类定义了一个与父类完全相同的虚函数时,则称子类的这个函数重写(也称覆盖)了父类的这个函数。