template相当于overload,有点类似的意思
我有两个int 比较,写个compare(int,int)
可是我要是有两个float比较,就得重写compare(float,float)
我用template就可以做个通用的,估计这也是template被造出来的意思
#include <iostream>
using namespace std;
template <class K, class T>
class Perhaps {
public:
Perhaps(K k,T t):k1(k),t1(t){}
void show(){
cout<<k1<<" " <<t1<<endl;
cout<<k1-t1<<endl;
}
private:
K k1;
T t1;
};
int main(int argc, char* argv[]){
Perhaps<int,int> per(1,2);
per.show();
Perhaps<float,float> per1(1.1,2.2);
per1.show();
return 0;
}
在类Perhaps调用的时候,需要用Perhaps<int,int> per(1,1),有个左右尖号。
其实以前一直挺不愿碰STL和模板的,但是现在看来,也不是那么的麻烦。
C++用熟了,用多了,各方面就容易多了。