小编Ail*_*lrk的帖子

这种理解是否正确:特征和函数重载都实现了临时多态性,但方向不同

我正在学习一些多态性。

rust地址的wiki页面trait是一种实现ad hoc多态性的方法,而ad hoc多态性的页面说的function overloading是ad hoc多态性的一个例子。

根据我目前的理解水平,如果提供不同类型的参数将调用不同的实现,则函数是临时多态的。但traitfunction overloading看起来如此不同:trait对类型参数添加约束,任何类型实现都trait可以接受,而函数重载则对具体类型进行重载,任何未重载的类型都是不可接受的。

我可以说traitfunction overloading实现相反方向的临时多态性吗?是trait通过专业化还是overloading通过普遍化?

PS:在c++中,模板特化还可以根据传入的类型参数提供不同的实现,这也是ad hoc多态性的一个例子吗?

polymorphism typeclass rust adhoc-polymorphism

4
推荐指数
1
解决办法
757
查看次数