c++模板
阿新 • • 發佈:2018-02-12
定義函數 成員函數 post pan style template clu add put
模板一般分函數模板與類模板
函數模板:
解決,不同數據進行同種操作時,可以給數據定義一個模板類型,以達到函數的通用性
基本語法
template <typename T> //定義模版類型名T
//模版函數定義
T test(T x){
return x;
}
計算絕對值函數:
#include <iostream> using namespace std; template <typename T> T abs(T temp) { temp = temp > 0 ? temp : -temp; return temp; } int main() {int i = 10; double d = -5.5; cout << abs(i) << " " << abs(d) << endl; return 0; }
通過函數模板,計算數值的絕對值,就不用重復為不同類型數據定義函數;
類模板
解決同一種類,定義不過數據,或,其成員函數對不同數據作相同處理;
類模板基本語法:
template <class T>
class abs
{
private:
int i;
T x;
public:
abs(T a, T b){}
}
類模板對象的創建:
abs <int> a;
abs <double> b;
使用例:
#include <iostream> using namespace std; template <class T> class Tes { private: T i; T j; public: Tes(T x = 0, T y = 0) { i = x; j = y; } T put() { return i * j; } ~Tes() {} }; int main() { Tes<int> a(2, 5); cout << a.put() <<endl; Tes <double> b(2.5, 5.5); cout << b.put() <<endl; return 0; }
成員函數外部定義方法:
基本形式:
template<模板形參列表> 函數返回類型 類名<模板形參名>::函數名(參數列表){函數體},
template<class T> void Tes<T>::add(參數列表){函數體},
#include <iostream> using namespace std; //定義模板類 template <class T> class Tes { private: T i; T j; public: Tes(T x = 0, T y = 0) { i = x; j = y; } T put() { return i * j; } T add(); ~Tes() {} }; //外部定義函數方法 template <class T> T Tes<T>::add() { return i + j; } //主函數 int main() { Tes <int> a(2, 5); cout << a.put() <<endl; cout << a.add() <<endl; Tes <double> b(2.5, 5.5); cout << b.put() <<endl; cout << b.add() <<endl; return 0; }
總結:
在類模板中,只要使用到類名的,後面就要有<>的存在;
c++模板