C 函式模板

2021-10-09 09:54:32 字數 1408 閱讀 1152

一、函式模板

模板是泛型程式設計是一種思想,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 所謂函式模板,實際上是建立乙個通用函式,其函式型別和形參型別不具體指定,用乙個虛擬的型別來代表。這個通用函式就稱為函式模板。凡是函式體相同的函式都可以用這個模板來代替,不必定義多個函式,只需在模板中定義一次即可。在呼叫函式時系統會根據實參的型別...