常規定義乙個函式用於交換兩個數 ,兩個數可能是 int 或者 double ,可以這麼實現
void swap(int &x, int &y);
void swap(double &x, double &y);
但是如果種模擬較多的話,就需要寫很多個引數,而這幾個函式的樣式基本一樣,從中總結出共性,如下結構
template t>
void swap(t &x ,t &y)
以上也就是函式模板的形式,要注意的是 模板的宣告需要將模板的頭一起帶上,如下:
template t>
void swap(t &x, t &y);
定義了乙個如上的模板,要使用它的時候 ,以下是main函式中
int a = 1;
int b = 2;
double c = 3.0;
double d = 4.0;
my_swap(a, b);
my_swap(c, d);
cout
<< " a = "
<< a << " b = "
<< b << endl;
cout
<< " c = "
<< c << " d = "
<< d << endl;
從結果看確實實現了功能,這可比使用函式過載好用多了
模板和過載各有特色,如果能結合兩個一起使用,效果更好
以下結合兩種使用:
template
void my_swap(t &x, t &y);
template
void my_swap(t &x, t &y, int n);
tempalte void my_swap(int , int );
不過由於是模板的例項化,在這之前,必須先有函式模板的存在,否則會出現如下錯誤
顯示具體化:
template <> void my_swap(job &x, job &y);
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 所謂函式模板,實際上是建立乙個通用函式,其函式型別和形參型別不具體指定,用乙個虛擬的型別來代表。這個通用函式就稱為函式模板。凡是函式體相同的函式都可以用這個模板來代替,不必定義多個函式,只需在模板中定義一次即可。在呼叫函式時系統會根據實參的型別...