C 函式模板

2021-06-27 08:32:29 字數 1083 閱讀 3041

c++提供了函式模板(function template)。

所謂函式模板,實際上是建立乙個通用函式,其函式型別和形參型別不具體指定,用乙個虛擬的型別來代表。這個通用函式就稱為函式模板。

凡是函式體相同的函式都可以用這個模板來代替,不必定義多個函式,只需在模板中定義一次即可。在呼叫函式時系統會根據實參的型別來取代模板中的虛擬型別,從而實現了不同函式的功能。看下面的例子就清楚了。

【例4.7】將例4.6程式改為通過函式模板來實現。

#include

using

namespace std;

template

<

typename

t>

//模板宣告,其中t為型別引數

tmax(t

a,tb,t

c)//定義乙個通用函式,用t作虛擬的型別名

intmain()

執行結果與例4.5相同。為了節省篇幅,資料不用cin語句輸入,而在變數定義時初始化。程式第3~8行是定義模板。

定義函式模板的一般形式為:

template < typename t>

通用函式定義  通用函式定義

或template

通用函式定義  通用函式定義

在建立函式模板時,只要將例4.5程式中定義的第乙個函式首部的int改為t即可。即用虛擬的型別名t代替具體的資料型別。在對程式進行編譯時,遇到第13行呼叫函式max(i1, i2, i3),編譯系統會將函式名max與模板max相匹配,將實參的型別取代了函式模板中的虛擬型別t。此時相當於已定義了乙個函式:

int

max(

int a,

int b,

int c)

然後呼叫它。後面兩行(14,15行)的情況類似。

型別引數可以不只乙個,可以根據需要確定個數。如:

template

可以看到,用函式模板比函式過載更方便,程式更簡潔。

但應注意它只適用於函式的引數個數相同而型別不同,且函式體相同的情況,如果引數的個數不同,則不能用函式模板。

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 函式模板

01 函式模板定義.cpp include include using namespace std if 0 int max int a,int b char max char a,char b double max double a,double b endif define max type1 ...