类模板是类的抽象,类是类模板的实例。
声明类模板:template<class T1,class T2...>//可声明多个类型参数
关于类模板的使用谨记一点。用类模板实例化的类中实参数类型去代替声明时的类型参数名。
如声明:template <class T1,class T2>
class Compare
{
public:
Compare(T1 a,T2 b):x(a),y(b){};
void display();
private:
T1 x;
T2 y;
};
实例化:Compare<int,float> cmp(2,3.14);
此处即用int代替模板中的T1,float代替模板中的T2;
下面以两段程序说明类模板的使用:
1、在类模板内定义成员函数,含两个类型名:
#include<iostream>
using namespace std;
template <class T1,class T2>
class Compare
{
public:
Compare(T1 a,T2 b):x(a),y(b){};
void display()
{
cout<<x<<endl;
cout<<y<<endl;
}
private:
T1 x;
T2 y;
};
int main()
{
Compare<int,float> cmp(2,3.14);
cmp.display();
return 0;
}
2、在类模板外定义成员函数,含两个类型名:
#include<iostream>
using namespace std;
template <class T1,class T2>
class Compare
{
public:
Compare(T1 a,T2 b):x(a),y(b){};
void display();
private:
T1 x;
T2 y;
};
template <class T1,class T2>
void Compare<T1,T2>::display()
{
cout<<x<<endl;
cout<<y<<endl;
}
int main()
{
Compare<int,float> cmp(2,3.14);
cmp.display();
return 0;
}