c++提供了函式模板(function template)。
所謂函式模板,實際上是建立乙個通用函式,其函式型別和形參型別不具體指定,用乙個虛擬的型別來代表。這個通用函式就稱為函式模板。凡是函式體相同的函式都可以用這個模板來代替,不必定義多個函式,只需在模板中定義一次即可。在呼叫函式時系統會根據實參的型別來取代模板中的虛擬型別,從而實現了不同函式的功能。看下面的例子就清楚了。
例4.7 將例4.6程式改為通過函式模板來實現。
#include
using namespace std;
template//模板宣告,其中t為型別引數
t max(t a,t b,t c) //定義乙個通用函式,用t作虛擬的型別名
int main( )
然後呼叫它。後面兩行(14,15行)的情況類似。
型別引數可以不只乙個,可以根據需要確定個數。如
template
可以看到,用函式模板比函式過載更方便,程式更簡潔。但應注意它只適用於函式的引數個數相同而型別不同,且函式體相同的情況,如果引數的個數不同,則不能用函式模板。
C 中的函式模板詳解
了解或熟悉c 的都,都對函式過載有一定的了解。c 中的函式過載就是指申明幾個功能類似的函式,但這些函式的引數型別或順序必須不同,即同乙個函式不同的運算功能。例如,比較a,b的大小,我們可以定義乙個max函式,對不同的型別有如下的版本 char max char a,char b int max in...
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後加乙個識別符號構成。在...