首页 > 代码库 > 类模板
类模板
为了说明类模板,先看一个类模板的例子
#include <iostream> using namespace std; template<class T> class Compare//定义一个比较类(用于比较两个数的大小) { public: //使用初始化表的形式初始化数据成员 Compare(T x, T y):a(x),b(y){} T max(void)//比较两个数据,并且返回最大值 { return a > b ? a : b; } T min(void)//比较两个数据,并且返回最小值 { return a < b ? a : b; } //显示比较的数据 void show( ); private://两个比较的数 T a; T b; }; //显示比较的数据 template<class T> void Compare<T>::show( ) { cout<<a<<" "<<b; } void main() { Compare<int> cmp1(1,2); Compare<float> cmp2(3.55,2.7); Compare<char> cmp3('A','z'); cmp1.show(); cout<<" 中最大的数是:"<<cmp1.max()<<endl; cmp1.show(); cout<<" 中最小的数是:"<<cmp1.min()<<endl; cmp2.show(); cout<<" 中最大的数是:"<<cmp2.max()<<endl; cmp2.show(); cout<<" 中最小的数是:"<<cmp2.min()<<endl; cmp3.show(); cout<<" 中最大的字符是:"<<cmp3.max()<<endl; cmp3.show(); cout<<" 中最小的字符是:"<<cmp3.min()<<endl; system("pause"); }
执行结果:
上面的程序是实现比较两个数据的大小
代码还可以写成下面的形式
#include <iostream> using namespace std; template<class T> class Compare//定义一个比较类(用于比较两个数的大小) { public: //使用初始化表的形式初始化数据成员 Compare(T x, T y); T max(void);//比较两个数据,并且返回最大值 T min(void);//比较两个数据,并且返回最小值 void show( );//显示数据 private://两个比较的数 T a; T b; }; //使用初始化表的形式初始化数据成员 template <class T> Compare<T>::Compare(T x, T y) { a = x; b = y; } template <class T> T Compare<T>::max(void)//比较两个数据,并且返回最大值 { return a > b ? a : b; } template <class T> T Compare<T>::min(void)//比较两个数据,并且返回最小值 { return a < b ? a : b; } //显示比较的数据 template<class T> void Compare<T>::show( ) { cout<<a<<" "<<b; } void main() { Compare<int> cmp1(1,2); Compare<float> cmp2(3.55,2.7); Compare<char> cmp3('A','z'); cmp1.show(); cout<<" 中最大的数是:"<<cmp1.max()<<endl; cmp1.show(); cout<<" 中最小的数是:"<<cmp1.min()<<endl; cmp2.show(); cout<<" 中最大的数是:"<<cmp2.max()<<endl; cmp2.show(); cout<<" 中最小的数是:"<<cmp2.min()<<endl; cmp3.show(); cout<<" 中最大的字符是:"<<cmp3.max()<<endl; cmp3.show(); cout<<" 中最小的字符是:"<<cmp3.min()<<endl; system("pause"); }
执行结果和上面的代码一样
类模板的形式:template<class 类型名>
如:template<class T> T表示数据类型名
类模板中的成员函数在函数外部定义的形式:
template<class 类型名>
类名<类型名> ::成员函数名
如:
template<class T>
Complare<T>::show()
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。