參考:
C++模板使用介紹 http://www.kuqin.com/language/20090405/44193.html
C++ STL 學習 for_each 與仿函數 http://blog.chinaunix.net/uid-20384806-id-1954377.html
學習一項技術,就先要熟悉基本語法格式,對於C++我是半路出家。它和C不同的那些關鍵字,真的讓人很頭暈。
1.explicit constructor(); 是對於構造函數的修飾符,說明只支持顯式轉換
關於顯式和隱式轉換 http://www.diybl.com/course/3_program/c++/cppjs/20090302/156731.html
隱式轉換有時會造成不確定的類型錯誤。
2.一個較簡單的模板函數
#include <iostream>
using namespace std;
//聲明一個函數模版,用來比較輸入的兩個相同數據類型的參數的大小
//T可以被任何字母或者數字代替。
template <class T>
T min(T x,T y)
{ return(x<y)?x:y;}
void main( )
{
int n1=2,n2=10;
double d1=1.5,d2=5.6;
cout<< "較小整數:"<<min(n1,n2)<<endl;
cout<< "較小實數:"<<min(d1,d2)<<endl;
system("PAUSE");
}
3.有模板函數,當然也有模板類。模板類包括類的構造、類體的定義、類的使用三部分
//
ClassTemplate.h
#ifndef ClassTemplate_HH
#define ClassTemplate_HH
template<typename T1,typename T2>
class myClass{
private:
T1 I;
T2 J;
public:
myClass(T1 a, T2 b);//Constructor
void show();
};
//這是構造函數
template <typename T1,typename T2>
myClass<T1,T2>::myClass(T1 a,T2 b):I(a),J(b){}
//這是void show();
template <typename T1,typename T2>
void myClass<T1,T2>::show()
{
cout<<"I="<<I<<", J="<<J<<endl;
}
#endif
//類體的定義//test.cpp
#include <iostream>
#include "ClassTemplate.h"
using namespace std;
void main()
{
myClass<int,int> class1(3,5);//模板類中函數的使用方法,先指明類型,再傳入參數
class1.show();
system("PAUSE");
}