欢迎来到天天文库
浏览记录
ID:39453779
大小:33.50 KB
页数:4页
时间:2019-07-03
《C++中类模板与模板类定义及具体使用方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、类模板 类模板也称为类属类或类生成类,是为类定义的一种模式,它使类中的一些数据成员和成员函数的参数或返回值可以取任意的数据类型。类模颁布是一个具体的类,它代表着一族类,是这一族类的统一模式。使用类模板就是要将它实例化为具体的类。 定义类模板的一般形式为: template class类名 { //…… }其中,template是声明类模板的关键字;template后面的尖括号不能省略;数据类型参数标识符是类模板中参数化的类型名,当实例化类模
2、板时,它将由一个具体的类型来代替。 定义类模板时,可以声明多个类型参数标识符,各标识符之间用逗号分开。 类定义中,凡要采用标准数据类型的数据成员、成员函数的参数或返回类型的前面都要加上类型标识符。 如果类中的成员函数要在类的声明之外定义,则它必须是模板函数。其定义形式为: template数据类型参数标识符类名<数据类型参数标识符>∷函数名(数据类型参数标识符形参1,……,数据类型参数标识符形参n){ 函数体}模板类将类模板的模板参数实例化后生成的具体的类
3、,就是模板类。由类模板生成模板类的一般形式为:类名<数据类型参数标识符>对象名1,对象名2,…,对象名n;这里的数据类型参数标识符对应的是对象实际需要的数据类型。 6.4 应用举例 例6.1函数模板的声明和模板函数的生成的例。 #include template //声明模板函数,T为数据类型参数标识符 voidswap(T&x,T&y) //定义模板函数 { Tz;
4、 //变量z可取任意数据类型及模板参数类型T z=y;y=x;x=z; } voidmain() { intm=1,n=5; doublea=8.9,b=3.4; cout<<”m=”<5、//实例化为双精度型模板函数 cout<<“m与a,n与b交换以后:”< constintsize=10; 6、 template classstack { Tstck[size]; intt; public: stack(){t=0;} voidpush(Tch); Tpop(); }; template voidstack::push(Tob) { if(t==size) { cout<<”stackisfull!”<7、turn0; } stck[t]=ob; t++; }template voidstack::pop() { if(t==0) { cout<<”stackisempty!”<cs1,cs2; inti; cs1.p8、ush(‘a’); cs2.push(‘x’); cs1.push(‘b’); cs2.push(‘y’); cs1.push(‘c’); cs2.push(‘z’); for(i=0;i<3;i++) cout<<”popcs1:”<
5、//实例化为双精度型模板函数 cout<<“m与a,n与b交换以后:”< constintsize=10;
6、 template classstack { Tstck[size]; intt; public: stack(){t=0;} voidpush(Tch); Tpop(); }; template voidstack::push(Tob) { if(t==size) { cout<<”stackisfull!”<7、turn0; } stck[t]=ob; t++; }template voidstack::pop() { if(t==0) { cout<<”stackisempty!”<cs1,cs2; inti; cs1.p8、ush(‘a’); cs2.push(‘x’); cs1.push(‘b’); cs2.push(‘y’); cs1.push(‘c’); cs2.push(‘z’); for(i=0;i<3;i++) cout<<”popcs1:”<
7、turn0; } stck[t]=ob; t++; }template voidstack::pop() { if(t==0) { cout<<”stackisempty!”<cs1,cs2; inti; cs1.p
8、ush(‘a’); cs2.push(‘x’); cs1.push(‘b’); cs2.push(‘y’); cs1.push(‘c’); cs2.push(‘z’); for(i=0;i<3;i++) cout<<”popcs1:”<
此文档下载收益归作者所有