C 模板函式的小入門

2021-09-25 10:33:54 字數 962 閱讀 2255

##c++模板函式的小入門

#include

using namespace std;

template //每定義乙個模板函式都要帶上這句模板宣告

t m_max(t a,t b) //模板函式必不可少的兩步寫法,函式的返回值型別和引數型別可以設定為模板型別

char *m_max(char *str1,char *str2)//寫乙個過載函式,是為了說明,當乙個模板函式和過載函式同時出現時,優先呼叫過載函式,這是他們的編譯順序不同決定的,模板函式是函式的描述,在呼叫時才轉化為過載函式

else

}class cpoint

~cpoint()

void print()

friend bool operator >(const cpoint &r1,const cpoint &r2);

friend ostream &operator<<(ostream &os,const cpoint &c1);};

bool operator >(const cpoint &r1,const cpoint &r2)//比較兩個點距離原點的距離遠近

else

}

ostream &operator<<(ostream &os,const cpoint &c1)輸出過載運算子在vs編譯時需要在運算子後加上
int main()

模板函式的注意點:

模板函式並不是真正的的函式,它是對函式形式的描述,編譯器不會生成.obj可執行**段;

當編譯器發現模板函式被呼叫時,首先根據函式形參表判斷是否匹配,如果匹配生成過載函式,函式模板中所有模板引數都將被替換;

3.如果沒有與引數列表相匹配的過載函式,則呼叫模板函式,並進行一些隱式轉換

模板函式和巨集定義的異同:

巨集定義函式,僅做簡單的文字替換,不做任何語法檢查

巨集定義在預編譯階段完成,而模板函式在呼叫時,才轉化為過載函式

C 函式模板入門

先看如下2個函式 交換int型別兩個數字 void myswapint int a,int b 交換double資料 void myswapdouble double a,double b 通過對比,兩個函式僅僅是函式名不同,傳參型別不同,但 的邏輯完全一樣。為了減少重複 的編寫。我們可以通過如下方...

C 模板函式 模板類小筆記

c 除了類裡的記憶體模型比較有意思之外,泛型程式設計也是很有思想的抽象。當然最有用的還是標準模板庫,帶上標準的 裡面包含了各種現成的容器,好用並且格式比較統一 美觀 include include using namespace std template const type getmax cons...

c 入門學習 函式模板

1.函式模板 1.1 函式模板的定義 函式模板的定義與類模板的定義型別,如 template type min type a,type b 同樣是使用template,也可以使用template,這裡定義了函式的返回值型別,引數型別,也可以在函式模板中使用關鍵字size定義常量,如 template...