C 函式模板

2021-10-02 09:08:36 字數 2088 閱讀 7451

模板是c++的高階特性,分為函式模板和類模板。

使用模板能夠快速建立裡具有型別安全的類庫集合和函式集合。

關於類模板的學習————》c++類模板

本文主要介紹函式模板

函式模板不是乙個實在的函式,編譯器不能為其生成可執行**。定義函式模板最後只是乙個對函式功能框架的描述,當它具體執行時,將根據傳遞的實際引數決定功能。

template

引數型別及參 返回型別 函式名(形式引數)

也可以宣告函式模板分成template部分和函式部分:

template

引數類

返回型別 函式名(形式引數)

template為關鍵字,表示定義乙個模板。

<>表示模板引數,模板引數有兩種,是模板型別引數、模板非型別引數。模板型別引數使用關鍵字class或typedef開始,後面跟乙個合法型別名。模板非型別引數與普通引數定義相同,通常是乙個常數。可以不使用模板非型別引數。

下面將以求和函式為例解釋函式模板的使用

源**:

#include

using

namespace std;

//定義求和函式模板

template

<

class

type

>type sum

(type x,type y)

intmain()

結果圖:

首先是宣告乙個模板template < class type >

然後是定義函式模板的具體實現方法type sum(type x,type y)

單獨觀察具體實現方法,我們很容易聯想到普通的自定義函式。

//函式模板                           //自定義函式

type sum

(type x,type y)

//}

相比之下,模板函式在宣告型別的情況下可以實現各種運算,而自定義函式只能實現單純的int運算。

所以,定義函式模板的優點就是適應各種型別物件的計算及輸入輸出。

最後就是函式模板的呼叫s1=sum< int >(a,b);s2=sum< double >(a2,b2);

< int >、< double >就是使用模板的方式,即模板型別。若除去<>,就變成了s1=sum(a,b);s2=sum(a2,b2);跟自定義函式的使用方法相同。

使用陣列作為模板引數,分別輸出int陣列、double陣列的最大值

源**:

#include

using

namespace std;

template

<

class

type

,int len>type max

(type a)

return m;

}int

main()

;double y[5]

=;int max1=max<

int,

5>

(x);

double max2=max<

double,5

>

(y);

cout<

cout<

return0;

}

結果圖:

這樣int、double的混合應用就凸顯了函式模板的優點,適應各種型別物件。

另外,與加法函式不同的是,在定義求最大值函式模板template 同時使用到了模板型別引數type和模板非型別引數len。

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