动多态与静多态
表现动多态的函数只处理特定类系列的对象,一个类层次的结构,而且基类必须是多态类,一个类系列配一个表现多态的函数。而模板表现的多态不是在运行中进行类型识别的,而是在编译时刻进行类型识别的,因而模板实现的多态为静多态。
对于抽象编程来说,或许使用动多态更好一点,他可以将类实现的源代码彻底隐蔽,无需提供给使用类的用户,以实现软件的保护。而静多态编程的代码由于程序结构的影响,还必须放在头文件中作为模板使用之前声明和定义。
从性能来看,静多态由于动多态,因为动多态是基于虚函数实现的机制,有间接的访问迂回代码,而静多态没有这种开销。
从错误检测来说,一个实体如果不具备某种操作,而程序又动态的绑定该操作,则必须在运行中才可以发现错误。而静多态编程在编译时检测类型匹配的,若果在实例化过程中发现一个实体没有的操作,会及时报错。