所謂函式模板,實際上是建立乙個通用函式,其函式型別和形參型別不具體指定,用乙個虛擬的型別來代表,這個函式型別就稱為函式模板。
具體表現:模板定義,
#includeusing namespace std;
template t max( t a,t a, t c)
int main()
{ int i1 = 8,i2 =5 ,i3 = 6 ,i;
double d1 = 56.9, d2 = 90.76, d3 = 43.1, d;
long g1 = 32323,g g2 = 59899, g3 =133244, g;
i = max(i1 ,i2 ,i3 );
d = max(d1, d2, d3);
g = max(g1, g2, g3);
cout <<"i_max = "<
其中的定義模板那裡:
template 函式定義 或 者template
template 含義是 模板,尖括號中先寫關鍵字,typename(或class)後面跟乙個型別引數t,這個型別引數實際上是乙個虛擬的型別名,表示模板**現的t是乙個型別名,但是現在並未指定它是哪一種具體的型別。
class 和typename的作用相同,都是表示型別名,二者可以互換,以前的c++程式設計師都用class,新標準c++把typename加到標準c++中的,因為class很容易於c++中的類混淆,而用,typename 是不久前才被加到標準c++中的,而用typename的含義就很清楚,是型別名(而不是類名)。
型別引數也可以不止乙個 template
只適用於函式引數個數相同,而函式引數型別不同,且函式體相同的情況,如果函式的引數個數不同,則不能用函式模板。
整體來說,函式模板就是只適用於函式的引數個數相同而型別不同,且函式體相同的情況,如果函式的引數的個數不同,則不能用函式模板。
C 中的函式模板
我們在定義函式時,可以通過定義函式模板,來簡化一些功能相同而資料型別不同的函式的定義和呼叫過程。c 中的函式模板 對於類的宣告來說,也有同樣的問題。有時,有兩個或多個類,其功能是相同的,僅僅是資料型別不同,如下面語句宣告了乙個類 class compare int int max int min f...
C 中的函式模板
模板的意義 對型別也可以進行引數化了 template 定義乙個模板引數列表,typename也可以用class替換 bool compare t a,t b 特例化 template bool compare const char a,const char b bool compare const...
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...