类模板表示一组类.ppt

类模板表示一组类.ppt

ID:52229339

大小:426.00 KB

页数:30页

时间:2020-04-03

类模板表示一组类.ppt_第1页
类模板表示一组类.ppt_第2页
类模板表示一组类.ppt_第3页
类模板表示一组类.ppt_第4页
类模板表示一组类.ppt_第5页
资源描述:

《类模板表示一组类.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第六讲模板★类模板:表示一组类★函数模板:操作不同类型的对象★类模板◆举例:通用栈classstack{T*v;T*p;intsz;public:stack(ints){v=p=newT[sz=s];}~stack(){delete[]v;}voidpush(Ta){*p++=a;}Tpop(){return*--p;}intsize()const{returnp-v;}};T:栈中存放的类型,非具体类型stack.h缺陷:T为全局名,无法重定义用类模板——通用类解决方法typedefintT;#include“stack.h”//使用整型栈类typedefcharT;#inclu

2、de“stack.h”//使用字符栈类8/25/20212templateclass类模板名{//对类模板的定义}模板的类型参数(可以多个)T的作用域——类定义中类模板带有类型参数,以表示不同的类。使用时传入实际类型,产生相应的类。◆stack类模板:templateclassstack{T*v;T*p;intsz;public:stack(ints){v=p=newT[sz=s];}~stack(){delete[]v;}voidpush(Ta){*p++=a;}Tpop(){return*--p;}intsize()const{returnp-v

3、;}};8/25/20213stacks(10);//出错,类模板中含有不可知的类型,不能直接创建对象◆类模板的实例化(给类模板的参数指定具体类型)类(不是实例对象)实例化类模板的一般形式:类模板名<具体类型表>stack//char实例化stack类模板后的类stacksc(10);stacksi(10);stack类模板stack类stack类stack的实例对象stack的实例对象………………模板实例化类实例化8/25/20214#include#include"stack.h"

4、voidmain(){stacksch(20);stacksi(20);sch.push('a');si.push(10);if(sch.pop()!='a'

5、

6、si.pop()!=10)exit(1);//……}8/25/20215◆类模板的成员函数可在类模板外定义(非内联):templatevoidstack::push(Ta){*p++=a;}templatestack::stack(ints){v=p=newT[sz=s];}◆实例化的类模板和普通类一样使用:voidf(stack&sc){

7、sc.push(Complex(1,2));Complexz=2.5*sc.pop();stack*p=0;p=newstack(800);for(inti=0;i<800;i++)p->push(i);//……}8/25/20216◆类模板的派生:类模板——一组类:可从一个类派生;可从另一类模板派生。1)基类为一普通类#includeclassB{inti;protected:floatf;public:voidg(){cout<<“g”<classA:publicB{voida(){f

8、=12.0;i=12;}Tt;//……};8/25/20217Abi;Abc;bi.g();bc.g();BABAA…………2)基类为另一类模板:templateclassB{public:voidf(Tb){cout<classA:publicB{public:voidd(T1a){cout<A基类B的类型参数类A的类型参数Aaa;aa.f(10);aa.d(‘a’

9、);8/25/20219★函数模板◆函数模板定义的一般形式:template<模板参数表>函数返回值类型函数名<函数参数表>{//函数模板的定义}模板参数表中指明的类型参数必须用于函数参数表举例:templateTmax(Ta,Tb){returna>b?a:b;}8/25/202110◆函数模板的实例化(生成具体的函数代码):不需用户显式实例化,函数调用时编译器处理inta,b;charc,d;intm1=max(a,b);charm2=max(c,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。