多态分为两种:通用多态和特定多态。两者的区别是前者对工作的类型不加限制,允许对不同类型的值执行相同的代码;后者只对有限数量的类型有效,而且对不同类型的值可能要执行不同的代码。通用的多态又分为参数多态和包含多态;特定的多态分为过载多态和强制多态。
参数多态:采用参数化模板,通过给出不同的类型参数,使得一个结构有多种类型。例如,模板类。
过载多态:同一个名(操作符﹑函数名)在不同的上下文中有不同的类型。就是c++中的函数重载。
包含多态:同样的操作可用于一个类型及其子类型。包含多态一般需要进行运行时的类型检查。例如,虚函数覆盖机制。
强制多态:编译程序通过语义操作,把操作对象的类型强行加以变换,以符合函数或操作符的要求。程序设计语言中基本类型的大多数操作符,在发生不同类型的数据进行混合运算时,编译程序一般都会进行强制多态。
网友评论