Trait是什么
1、Ad-hoc polymorhism是什么
另一个概念:parametric polymorhism参数化多态
- 是指为了把同一段代码用在不同的类型上,使用变量类型来替代实际的类型,并按照实际需要传入具体的类型信息来实例化这段代码
- 保证所有的实例都拥有相同的行为
平时写的模板方法、模板类经常用
template<typename T>
T Add(T a, T b) { return a+b; }
Ad-hoc polymorhism
根据TAPL中的说法,Ad-hoc和parametric不同,Ad-hoc多态要求多态的值在不同的type下被观测时,展现出不同的行为
- 例如C++的函数重载,operator+对于字符串的重载语义是字符串拼接,针对整数的重载是求和
- 因此对于单个函数符号关联了多种类型的不同实现,具体选择哪种实现是根据作用的参数type决定的。这种选择哪种实现的决定(或解析resolution),可能会在编译期或者运行期执行:如果对这种重载的解析是静态的,则在编译期做决定——编译器的多态,静态多态;否则在运行期——运行时多态,OO里常用的多态。运行期多态也有子类型多态subTyping的含义在里面。