C++函數模版的簡單使用


模版算是C++的獨有特性吧,也算是C++中比較難的地方,我平時開發的時候用的非常少,或者幾乎沒有用到,需要模版的地方是能看懂框架中相關的代碼;

模版函數相對還是很簡單的,引入模版的目的在於代碼的重用;比如算法相似,但是由於數據類型不同,我們不得不把同樣的一份代碼拷貝兩次,而僅僅是為了修改數據類型,那么在引入了函數模版之后,我們可以僅僅用一份代碼而表示不同重載函數。

下面介紹一下最簡單的函數模版的應用:

template <typename T>  //定義一個抽象的數據類型T

T myMax(T a, T b) {    //聲明函數模板

  return a > b ? a : b; 

}

int main () {

  int  a = 2;

  int b = 3;

  std::cout<<myMax(a, b)<<std::endl;  //動態生成函數 int myMax(int , int)

 

  float c = 2.0f;

  float d = 3.0f;

  std::cout<<myMax(c, d)<<std::endl;  //動態生成函數 flota myMax(float, float)

}

代碼在第一次調用myMax()函數時,其參數都是int型,則編譯器推導模板參數T為int,編譯器會以函數模板為樣板,以實際類型int代替函數模板中的抽象類型T,自動為這個函數調用生成一個int類型的版本。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM