1. 程式人生 > 其它 >函式模板與泛型

函式模板與泛型

關於函式模板與泛型程式設計的關係,見

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
&);