text: 特設多型是程式設計語言的一種多型，多型函式有多個不同的實現，依賴於其實參而呼叫相應版本的函式。因此，特設多型僅支援有限數量的不同型別。函式過載乃至運算子過載也是特設多型的一種。概述.特設多型與引數多型相對。"ad hoc"在這裡並不是貶義，而是指這類多型並不是型別系統的基本特性，不是像引數多型那樣適用於無窮多的型別，而是針對特定問題的解決方案。換言之，引數多型對各模板引數的實現，是根據模板的通用的行為的抽象，即泛型的語義；而特設多型可以針對不同的版本實現完全不同的行為，或曰對於每個不同的模版引數都有單獨的版本來應對。打個比方：假如我們要把原材料切成兩半——歷史.特設多型的名字其發明人克里斯托弗·斯特雷奇於1967年8月在哥本哈根的計算機程式設計暑期學校發表的著名論文《》，該文首次提出了引數多型、特設多型、左值、右值等概念。早繫結.多型的早繫結是在編譯期，編譯器完成多型的分派機制：把多型函式、多型型別的名字根據模板引數繫結到具體的模板實現。晚繫結.多型的是在執行期，程式確定即將要呼叫的多型函式的實現。Smalltalk實現了這種晚繫結機制。例子.加法運算子codice_1假設可以運用到如下的情形：過載.為此，需要的過載實現：因此，運算子名字codice_1實際上使用了三到四種完全不同的函式實現。
metadata.dataset: erhwenkuo/wikipedia-zhtw
metadata.title: 特設多型
metadata.url: https://zh.wikipedia.org/wiki?curid=4806280