多态(Polymorphism)

来源:互联网 发布:数据分析ppt怎么做 编辑:程序博客网 时间:2024/05/17 22:52

C++里多态的概念有点乱,有时间上Wikipedia上搜索了下相关词条,总结如下


Polymorphism(computer science)


在编程语言和类型理论中,Polymorphism(希腊语,意思为many shape)指的是单个接口对应多个类型实体。作为一个多态类型,它的操作(operation)也可以被提供给其他类型的value。存在几种完全不同类型的多态。

1.Ad hoc polymorphism:函数能够依据参数类型指定不同的实现(depending on a limited range of individually specified types and combinations.)。

其实就是函数重载(function overloading)


2.Parametric polymorphism:编码可以不指定任何特定类型,在被实例化作为参数时才去确定类型。在面向对象编程中,被称为generic programming,而在函数式编程中,则被简称为polymorphism。

在C++里就是模板(template)。


3.Subtyping:名字指定公用超类的不同子类的实例。在面向对象编程中,常被简称为polymorphism。

在C++中就是虚函数(virtual function)。


总结一下,广义的多态,分为三种类型,分别是Ad hoc, Parametirc, Subtyping,分别对应C++中的function overloading, Template 和 virtual function。而C++中所谓的多态,对应的就是Subtyping,通过virtual function的方式来实现。


参考链接:

1. https://en.wikipedia.org/wiki/Polymorphism_(computer_science)

2. https://en.wikipedia.org/wiki/Ad_hoc_polymorphism

3. https://en.wikipedia.org/wiki/Parametric_polymorphism

4. https://en.wikipedia.org/wiki/Subtyping

0 0
原创粉丝点击