[其它技巧]类模板

[其它技巧]类模板

ID:27724559

大小:1.09 MB

页数:39页

时间:2018-12-04

[其它技巧]类模板_第1页
[其它技巧]类模板_第2页
[其它技巧]类模板_第3页
[其它技巧]类模板_第4页
[其它技巧]类模板_第5页
资源描述:

《[其它技巧]类模板》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、10.1函数模板10.2类模板10.3标准模板库第14章模板与标准模板库模板模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。C++的标准模板库STL(StandardTemplateLibrary)已经成为一个标准,它包含容器,算法以及迭代子(或称迭代器)。本章首先探讨函数模板和类模板,然后介绍C++标准模板库的使用。函数模板的语法形式如下:template函数定义利用函数模板,可以建立一个具有通用功能的函数

2、,支持不同的函数参数和返回值,达到减少代码书写量的目的。T代表在函数模板中要使用的通用类型,在该函数的调用过程中,T被具体化。【10.1函数模板】templateTabs(Tvalue){returnvalue>0?value:-value;}例如重载函数,求绝对值的函数只要声明一个函数模板:intmain(){intnValue=-1,nResult;doubledblValue=-1.2,dblResult;nResult=abs(nValue);dblResult=abs(dblValue);co

3、ut<

4、,修改过程中也很容易出现各种疏漏。用一种类似函数模板的机制来结决问题——类模板。C++语言中的类模板的语法定义如下:Template<模板参数表>类声明当模板参数表中同时包含上述多项内容时,各项内容之间以逗号隔开。注与函数模板相同,类模板只有使用的时候才被具体化为某一种类型。使用模板类来产生对象时,按如下形式声明:模板<模板参数表>对象名1,......对象名n;模板参数表中的内容可以为:class标识符类型说明符标识符【10.2类模板】类模板举例//EXAMPLE10_02.H#ifndefEXAMPLE10_02_H#d

5、efineEXAMPLE10_02_HtemplateclassMax//声明类模板Max{private:Titem1,//类型为T,T在该类的对象生成时具体化item2,item3;public:Max(){}Max(Tthefirst,Tthesecond,Tthethird);TGetMaxItem();//求得3个元素中的最大值并按类型T返回voidSetItem(Tthefirst,Tthesecond,Tthethird);//设置类中的3个元素的值}#endif//EXAMPLE10_02B.

6、H例10-2//类模板的实现#ifndefEXAMPLE10_02B_H#defineEXAMPLE10_02B_HtemplateTMax::Max(Tthefirst,Tthesecond,Tthethird):item1(thefirst),item2(thesecond),item3(thethird){return;}templatevoidMax::SetItem(Tthefirst,Tthesecond,Tthethird){item1=thefirst;item2=

7、thesecond;item3=thethird;}templateTMax::GetMaxItem()(续){Tmaxitem;maxitem=item1>item2?item1:item2;maxitem=maxitem>item3?maxitem:item3;returnmaxitem;}#endif//EXAMPLE10_2.CPP//主程序#include#include″EXAMPLE1002.H″#include″EXAMPLE1002B.H″intmain(){M

8、axnmyMax(1,2,3);MaxdblmyMax(1.2,1.3,-1.4);cout<

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

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

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