C 函式模板

2021-08-10 18:15:20 字數 1248 閱讀 4764

常規定義乙個函式用於交換兩個數 ,兩個數可能是 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 所謂函式模板,實際上是建立乙個通用函式,其函式型別和形參型別不具體指定,用乙個虛擬的型別來代表。這個通用函式就稱為函式模板。凡是函式體相同的函式都可以用這個模板來代替,不必定義多個函式,只需在模板中定義一次即可。在呼叫函式時系統會根據實參的型別...