先看如下2個函式
//交換int型別兩個數字
void myswapint( int & a, int & b)
//交換double資料
void myswapdouble(double &a, double &b)
通過對比,兩個函式僅僅是函式名不同,傳參型別不同,但**的邏輯完全一樣。為了減少重複**的編寫。我們可以通過如下方式,將以上兩個函式合為乙個函式,如下
templatevoid myswap(t &a, t &b)
上面定義函式的方式,用專業術語來說就是:定義函式的模板。
這玩意要怎麼用呢?請看下面
int a = 10;
int b = 20;
myswap(a, b);
這裡對以上示例**進行說明,當編譯器編譯的時候,會根據a,和 b 的型別,將myswap()中的t替換成int 型別,替換之後myswap()就變成了如下這樣
void myswap(int &a, int &b)
template這是乙個固定的寫法,目的就是告訴編譯器,在編譯的時候,要檢測myswap()中引數的型別,然後將t,替換為該型別。
上傳myswap()中傳的是int 型別,那麼它同樣也可以傳其他型別,如下
double c = 3.14;
double d = 1.1;
myswap(c, d);
原理和上面一樣,在編譯器編譯的時候,檢測到c,d是double型別,那麼myswap()就會將t,替換成double,最終變成如下形式
void myswap(double &a, double &b)
現在總結一下,函式模板的作用是:當**邏輯相同,但傳參型別不同時,那麼就將該函式做成乙個函式模板,目的是減少重複**的編寫。
c 入門學習 函式模板
1.函式模板 1.1 函式模板的定義 函式模板的定義與類模板的定義型別,如 template type min type a,type b 同樣是使用template,也可以使用template,這裡定義了函式的返回值型別,引數型別,也可以在函式模板中使用關鍵字size定義常量,如 template...
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後加乙個識別符號構成。在...