2015-10-14 98 views

回答

1

让我们暂时将计算机语言与面包店进行比较:当bake函数超载时,可以有许多不同的烤箱(实现),一个用于面包,一个用于披萨等。只需要一个烤箱,但对于一些你想烤的东西,你需要一个小工具(“强制功能”),以使它适合那个烤箱。

因此,重载有多种实现(烤箱)由参数类型(食物)决定,强制有从每个参数类型(食物)到单一类型的多个强制函数(小工具)需求)

无论你有很多小工具或许多烤箱,他们应该由食物的类型独特的决定。当你有意大利食物的烤箱,而另一种食物含有西红柿时,你会遇到问题:如何做比萨饼?这是例如Haskell程序员知道“重叠类型特定”。它有时可以解决,例如如果一个烤箱严格地比另一个更专业(一个用于意大利食物,另一个用于托斯卡纳食物)

0

从一个非常普遍的角度来看,主要区别是,而超载是明确的(由你控制,程序员),强制类型转换是隐式(由编译器控制)。