函數模板 /函數重載

 函數重載(形參類型或者個數不同,僅函數返回類型不同不是,其實跟函數返回類型無關),調用時編譯器根據形參的具體實參調用相應函數。
int add(int x, int y); 
float add(float x, float y); 
形參類型不同
int add(int x,  int y); 
int add(int x,  int y, int z); 
形參個數不同 
函數模板實際上是建立一個通用函數,其函數類型和形參類型不具體指定,用一個虛擬的類型來代表。這個通用函數就稱爲函數模板。 
n函數體相同的函數都可以用這個模板來代替,不必定義多個函數,只要在模板中定義一次即可。
聲明:template<typename 虛擬類型參數> 然後函數定義
或
template<class 虛擬類型參數>  然後類定義(此時的類名叫模板類名)
使用:
  類名 <實際類型名> 對象名(實參列表);//非模板類創建對象 類名 對象名(實參列表); 不能直接用類名,因爲這個類裏沒有實際的類型,不能創建對象
template<class 虛擬類型參數> template<class 虛擬類型參數> 模板裏二者可以互換,用哪個都可以。c++加入typename ,是因爲老是和一般的類裏的class弄混
#include <iostream>
using namespace std;
template<typename T>
T max(T a,T b,T c)
{
if(b>a) a=b;
if(c>a) a=c;
return a;
}
可以不止一個參數比如 template <class T1,class T2>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章