一、函式模板
模板是泛型程式設計是一種思想,stl就是利用模板實現的乙個具體例項。
所謂函式模板,實際上是建立乙個通用函式,模板形參表示的是乙個未知的型別,它所用到的資料型別可以不具體指定,而用乙個識別符號來代替。進行函式呼叫時,傳遞什麼型別的實參,就相當於給函式模板指定了什麼型別的形參。
函式模板的形式:
template void fun(t a)
;
函式模板為:
template >
void
fun(
t a)
函式模板具體化為:
template<
>
void fun
(node no)
在使用fun(no);呼叫時,走函式模板具體化,不會走函式模板。
當然對普通資料型別也可以進行具體化,有具體化時,同樣不會再走函式模板。
具體化,函式模板和普通函式同時存在時,呼叫順序為普通函式,具體化,函式模板。
**示例:
#include
using namespace std;
struct node
;template >
void
fun(
t a)
template<
>
void fun
(node no)
template<
>
void fun
(int a)
void
fun(int a)
int main()
;fun
(no)
;//具體化
fun(1)
;//優先執行普通函式
return0;
}
執行結果:
node的具體化
1212.13
普通函式
1
三、函式模板的例項化
函式模板的例項化,即生成指定型別的函式定義。可以理解為,使用函式模板,用具體的變數型別來代替函式模板中的泛型型別。
形式:
template void fun(job& j1 ,job& j2);
函式模板的例項化沒有函式實現。
例如函式模板如下:
template >
void
fun(
t a)
其int型別的例項化形式為:
template void fun
(int a)
;//例項化
c 函式模板
include using namespace std template t max t a,t b,t c int main int main int i1 185,i2 76,i3 567,i double d1 56.63,d2 90.23,d3 3214.78,d long g1 67854...
c 函式模板
關鍵字template總是放在模板的電腦關於與宣告的最前面,關鍵字後面是用逗號分隔的模板參數列,該列表是模板參數列,不能為空。模板引數可以是乙個模板型別引數,它代表了一種型別 也可以是乙個模板非型別引數,它代表了乙個常量表示式。模板型別引數由關鍵字class或typename後加乙個識別符號構成。在...
C 函式模板
c 提供了函式模板 function template 所謂函式模板,實際上是建立乙個通用函式,其函式型別和形參型別不具體指定,用乙個虛擬的型別來代表。這個通用函式就稱為函式模板。凡是函式體相同的函式都可以用這個模板來代替,不必定義多個函式,只需在模板中定義一次即可。在呼叫函式時系統會根據實參的型別...