C 函式模板入門

2021-10-05 06:22:39 字數 1092 閱讀 2664

先看如下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後加乙個識別符號構成。在...