我正在学习一些多态性。
rust 地址的 wiki 页面trait
是一种实现 ad hoc polymorphism 的方法,而 ad hoc polymorphism 的页面说是ad hoc 多态function overloading
的一个例子。
根据我目前的理解水平,如果提供不同类型的参数将调用不同的实现,则函数是临时多态的。但是看起来如此不同:在类型参数上添加约束trait
,任何类型实现都是可以接受的,而函数重载在具体类型上重载,任何未重载的类型都是不可接受的。function overloading
trait
trait
我可以说trait
并function overloading
实现相反方向的临时多态性吗?正如trait
专业化和overloading
泛化一样?
PS:在c++中,模板特化也可以根据传入的类型参数提供不同的实现,这也是ad hoc多态的一个例子吗?