相對於繼承體系來說,template實際上也使用介面與多型,而繼承體系往往使用到的是顯式介面以及執行期多型,而template實際上用的是隱式介面以及編譯期多型。
隱式介面實際上就是類似下面這樣的東西:
1 template2int mytypes(t &tmp)
3
這裡的size相當於這裡的隱式介面。
小結:1. class以及template都支援介面以及多型
2. 對class而言介面是顯示的介面以函式簽名為中心,多型是通過virtual函式發生在執行期間
3. 對於template而言,介面是隱式的,一般基於有效表示式。多型是通過template具象化和函式過載解析而發生在編譯期間
條款41 了解隱式介面和編譯期多型
1 簡介 物件導向程式設計總是以顯式介面和執行期多型來解決問題。例如 class widget void doprocessing widget w 2 所謂的顯式介面 由於w的型別被宣告為widget,因此w需要widget介面,並且我們可以在原始碼中找到這個介面,看到原始碼的樣子,所以稱為是顯式...
1 了解隱式介面和編譯期多型
顯式介面,執行期多型 物件導向程式設計解決問題的方式 顯式介面 我們知道它是什麼樣子,在原始碼中明確可見。虛函式 提供執行期多型支援,根據動態型別決定呼叫函式。模板和泛型程式設計的重點是隱式介面和編譯期多型 看下面這個模板函式 cpp emplate void dosometing t w temp...
Item 41 隱式介面和編譯時多型
oop程式設計與類屬程式設計 generic programming 的一大區別 1 oop使用顯式的介面和執行時多型 2 類屬程式設計使用隱式介面和編譯時多型 當你看到上面的 時,你能在某個檔案裡找到下面的宣告 widget支援什麼函式一目了然,此之謂 顯式介面 許多函式以virtual打頭,需在...