类模板是类的抽象,类是类模板的实例。
声明类模板: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; }
时间: 2024-10-09 18:37:30