模版算是C++的獨有特性吧,也算是C++中比較難的地方,我平時開發的時候用的很是少,或者幾乎沒有用到,須要模版的地方是能看懂框架中相關的代碼;算法
模版函數相對仍是很簡單的,引入模版的目的在於代碼的重用;好比算法類似,可是因爲數據類型不一樣,咱們不得不把一樣的一份代碼拷貝兩次,而僅僅是爲了修改數據類型,那麼在引入了函數模版以後,咱們能夠僅僅用一份代碼而表示不一樣重載函數。框架
下面介紹一下最簡單的函數模版的應用:函數
template <typename T> //定義一個抽象的數據類型Tspa
T myMax(T a, T b) { //聲明函數模板開發
return a > b ? a : b; 編譯器
}編譯
int main () {模板
int a = 2;數據類型
int b = 3;float
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類型的版本。