先看下面利用类模板的一个实例程序:
#include <iostream>
using namespace std;
template <class T>
class Test{
public:
Test(T a,T b){
x=a;
y=b;
}
T getMin(){
return x<y?x:y;
}
void show(){
cout<<"x="<<x<<'\t'<<"y="<<y<<endl;
}
private:
T x,y;
};
int main(int argc, char* argv[])
{
Test<int> ob1(10,5);
Test<char> ob2('a','b');
Test<double> ob3(3.8,4.6);
ob1.show();
cout<<ob1.getMin()<<endl;
ob2.show();
cout<<ob2.getMin()<<endl;
ob3.show();
cout<<ob3.getMin()<<endl;
return 0;
}
从上面的程序可以看出,类模板为描述多个具有相同结构(成员变量及成员函数),仅成员类型不同(可能为int、char、double等类型)的类提供了方便。
模板类的定义格式如下:
template <class T1,class T2,......>
class <类名>
{
<成员说明>
};
其中,template是关键字,表示定义的是一个模板。类模板的定义是以template开始。T1,T2等为类模板的类型参数,用尖括号"<>"括起来,多个类型参数项之间用逗号隔开。在类成员的说明中,可以使用T1、T2等指定类中数据成员的类型、成员函数的参数类型和返回值类型。