乙個函式是不是只能用固定的資料型別呢?答案是否定的。只要是遇到處理完全相同,但是型別不一樣的函式就可以使用函式模板。函式模板可以增加**重用率,它使用非特定型別定義函式,到使用的時候再使用特定的型別替代。在沒有函式模板的情況下,當我們需要對多種不同的資料型別進行相同的操作時,只能使用函式過載的方法,定義出多個函式。例子如下:
//函式過載
#include
int min(int ii, int jj, int kk)
else
if ((jj < ii) && (jj < kk))
else
return temp;
}double min(double ii, double jj, double kk)
else
if ((jj < ii) && (jj < kk))
else
return temp;
}float min(float ii, float jj, float kk)
else
if ((jj < ii) && (jj < kk))
else
return temp;
}int main()
使用函式模板後,可以將**改寫成如下形式
#include
//使用函式模板,可以大大減少**量
template
t min(t ii, t jj, t kk)
else
if ((jj < ii) && (jj < kk))
else
return temp;
}int main()
函式模板還可以進行過載,特別是對於原模板函式存在缺陷的情況下,可以對函式進行定製。例子如下:
#include
#include
template
t min(t ii, t jj, t kk)
else
if ((jj < ii) && (jj < kk))
else
return temp;
}const
char *min (const
char *ch1, const
char *ch2, const
char *ch3)
else
if ((result3 < 0) && (result4 < 0))
else
return temp;
}int main()
對有缺陷的函式模板,使用同名非模板函式進行過載,這種操作稱為函式定製。 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 所謂函式模板,實際上是建立乙個通用函式,其函式型別和形參型別不具體指定,用乙個虛擬的型別來代表。這個通用函式就稱為函式模板。凡是函式體相同的函式都可以用這個模板來代替,不必定義多個函式,只需在模板中定義一次即可。在呼叫函式時系統會根據實參的型別...