- 1、本文档共41页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
templateclassTypeTypeStackType::Pop(){ if(top==0) { coutstackisempty!endl; return0; } top--; returns[top];}voidmain(){ Stackints1(10); Stackdoubles2(10); Stackchars3(10); s1.Push(11); s2.Push(1.1); s1.Push(22); s2.Push(2.2); s1.Push(33); s2.Push(3.3); coutpops1:; for(inti=0;i3;i++) couts1.Pop(); coutendl; coutpops2:; for(i=0;i3;i++) couts2.Pop(); coutendl; for(i=0;i10;i++) s3.Push(A+i); coutpops3:; for(i=0;i10;i++) couts3.Pop(); coutendl;}程序运行结果如下:pops1:332211pops2:3.32.21.1pops3:JIHGFEDCBA程序中定义了一个类模板Stack。其中,数据成员length用来记录堆栈中数据的个数,top用来指示栈顶位置,数组s用来存放堆栈中的数据。使用Push()函数将数据压入堆栈,使用Pop()函数弹出栈顶的数据。在主函数中利用类模板定义了三个对象,分别用来对int、double和char类型的数据进行操作。类模板可以有多个模板参数,在关键字template后,多个类型参数间用逗号分隔,且每个类型参数前都必须有关键字class。例如,下面的示例创建使用两个类型参数的类模板。【例6.9】使用两个类型参数的类模板示例。#includeiostream.htemplateclassT1,classT2classMyClass{ private: T1x; T2y; public: MyClass(T1a,T2b) { x=a;y=b; } voidShow() { coutx=x,y=yendl; }};voidmain(){ MyClassint,doubleobj1(10,5.3); obj1.Show(); MyClassint,charobj2(25,W); obj2.Show(); MyClasschar,char*obj3(M,thisisatemplate); obj3.Show();}程序运行结果为:x=10,y=5.3x=25,y=Wx=M,y=thisisatemplate在定义类模板时,关键字template后的模板参数除了可以是class引导的类型参数外,还可以是已知数据类型的参数。例如,如下的类模板定义中,使用了一个类型参数T和一个普通参数i: templateclassT,inti classTestClass { Tbuffer[i]; //T类型的数组大小随普通参数i的大小而变化 };使用类模板TestClass定义对象如下: TestClassdouble,10obj1; TestClasschar,8obj2;其中,类型参数的相应实参应为类型名,普通形参的相应实参必须为一个常量。习题1.C++中模板分为哪几种类型?2.简述函数模板的定义和使用方法。3.模板函数调用时,系统是否进行实参到形参类型的自动转换?4.是否允许函数模板与另一个函数取相同的名字?允许两个函数模板同名吗?使用这种重载时应注意些什么?5.类模板和函数模板是否只允许使用类型参数?6.在类的实现部分如何定义类模板的成员函数?如何使用类模板定义对象?7.编写一个对一维数组进行排序的函数模板。在主函数中使用设计的函数模板对int数组、double数组和char数组进行排序。8.编写一个函数模板,求数组中元素的最大值、最小值和平均值。9.设计一个队列类模板Queue,实现不同数据类型数据的队列操作。第6章模板第6章模板6.1函数模板6.2类模板习题6.1函数模板在程序设计中经常会出现这样的情况:多个函数的参数个数相同,函数的代
您可能关注的文档
- 《硬件趣学Python编程》《ppt_01 intro.ppt
- 《硬件趣学Python编程》《ppt_14 pointer.ppt
- 《Visual C++基础教程》课件_第5章.ppt
- 《硬件趣学Python编程》《ppt_13 structure.ppt
- 《硬件趣学Python编程》《ppt_11 function.ppt
- 《硬件趣学Python编程》《ppt_04 continuation.ppt
- 《硬件趣学Python编程》《ppt_07 loop.ppt
- 《电视技术》课件_第7章 彩色电视机的实训.ppt
- 《硬件趣学Python编程》《ppt_12 organization.ppt
- 《硬件趣学Python编程》《ppt_16 file.ppt
文档评论(0)