函式模板深探

Jonny0318發表於2017-04-26

函式模板:函式模板是c++模板機制的一種,其作用是 的為了不同的資料生成運算元相同或者相似的函式。

函式模板的實現:模板以關鍵字tempate開頭,其後是以一對尖括號劃分的模板引數列表,模板函式引數列表可以宣告多個引數,引數之間用逗號隔開。

template <typename T>T Swap(T &x,T &y)
{
	T  temp;
	temp  = x;
	x = y;
	y = temp;
}
對於例項中特有變數引數提取出來作為模板引數,然後編譯器根據需要將模板引數替換成具體型別,並根據模板自動生成對所需要型別進行操作的函式模板例項,即真是函式。

模板函式引數型別定義的關鍵字是:typename和class

利用模板引數推導時需要注意以下幾點:

1)編譯器只根據函式呼叫時給出的實參列表來推導模板引數值,與函式引數型別是無關的模板引數氣質無法推導。

2)與函式返回值相關的模板引數氣質也無法推導。

3)所有可推導模板引數必須是連續位於模板引數列表尾部,中間不可能有不可推導的模板引數。

未完待續。。。。。

相關文章