函式模板與泛型
阿新 • • 發佈:2022-03-13
關於函式模板與泛型程式設計的關係,見
https://blog.csdn.net/baidu_37964071/article/details/78235247
函式模板是通用的函式描述,它們使用泛型來定義函式,其中的泛型可用具體的型別(如int 或 double)替換。
1.模板並不建立任何函式,只告訴編譯器應該如何定義函式;函式模板不能縮短可執行程式,最終的程式碼不包含任何模板,而只包含為了程式生成的實際函式。(c++pp page 231)
2.顯示具體化:為特定型別提供具體化的模板定義,優先順序高於函式模板;(c++pp page 234);而非模板函式高於顯示具體化和模板函式。
3.顯示例項化:定義好函式模板後,當程式需要該函式模板定義的具體型別的函式時,編譯器會根據該函式模板生成具體型別的函式定義,這種例項化方式被稱為隱式例項化;
但c++還允許顯示例項化。
模板函式:
template <class T> void Swap(T &,T &);//template <typename T> void Swap(T &,T &);
顯示例項化:
template void Swap<int>(int &,int &);
顯示具體化:
template <> void Swap<int>(int& , int&); template <> void Swap(int& , int&);