模板:實現代碼重用機制
圖1 模板、模板類、模板函數和對象之間的關係
一、函數模板:建立通用函數,函數返回類型和形參不具體指定,用模板實參實例化的函數稱爲模板函數。
template <typename T> //T爲類型參數
T max(T x,T y){
return(x>y)?x:y;
};
非函數模板重載>函數模板重載
二、類模板
template <template 類型參數>
class 類名{
類成員聲明
};
類模板定義對象:
類模板名 <實際類型名> 對象(實參列表)
舉例:
#include <iuostream>using namespace std;
template<typename T>
class Three{
public:
Three{T a, T b,T c)
{z=a;y=b;z=c};
T sum()
{return x+y+z;};
private:
T x,y,z;
};
int main(){
Three <int> sum3_1(3,5,7);
Three <double> sum3_2(12.34,56.78,78.12);
cout<<"三個整數之和爲:"<<sum3_1.sum()<<endl;
cout<<"三個雙精度之和爲: "<<sum3_2.sum()<<end;
return 0;
}
類模板體外定義的成員函數:
template<typename T>
T Three<T>::sum()
{return x+y+z;
}