【函数模板】.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【函数模板】

【函数模板】 最具挑战性的挑战莫过于提升自我。——迈克尔·F·斯特利 最具挑战性的挑战莫过于提升自我。——迈克尔·F·斯特利 【函数模板】 功能相同而数据类型不同的一些函数,不必一一定义各个函数,可以定义一个可以对任何类型变量进行操作的函数模版。 定义:函数类型和形参不具体制定,用一个虚拟的类型来代表,这个通用函数就称为函数模版。 适用范围:凡是函数体相同的函数都可以用函数模版来实现。 好处与解决问题:不用定义多个函数,只需要在模版中定义一次即可。 【举例】 给定3个数,不制定其类型,求3个数的最大值。 1、不使用函数模版 (函数定义) 如果不更换类型名,需要重载函数 int max(int a,int b,int c) long max(long a,long b,long c) double max(double a,double b,double c) (引用) max(a,b,c) 2、使用函数模版 (函数定义) 不需要重载函数 Templatetypename T //模版声明,其中T为类型参数,typename是关键字 T max(T a,T b,T c) (引用) max(a,b,c) 【定义模板的一般形式】 template typename T 或 templateclass T 注意: 这里T是一个虚拟的类型名,在函数定义时用T来定义变量a,b,c,在定义时a,b,c的类型是不确定的,在调用时根据实参的类型来确定T是什么类型。 另外,类型参数可以不止一个,可以根据需要确定个数: 如: Template class T1,typename T2 【类模板】 有两个或多个类,其功能是相同的,仅仅是数据类型不同,可以考虑使用类模版。使用的时候只需要在类的声明前加上Template class 虚拟类型参数 如: Template class numtype class Compare { public: Compare(numtype a,numtype b) {x=a,y=b}; numtype max()     {return (xy)?x:y;} numtype min()     {return (xy)?x:y;}     private:      numtype x,y;     }; 函数的成员函数如果要在类模板外定义,应该改写成类模版的形式: templateclass numtype numtype Comparenumtype::max() //表示在类模板的作用域内 { return(xy)?x:y;} 注意:类模版的参数可以有一个或多个,每个类型前面都必须加class,如: templateclass T1,class T2 class someclass {...}; 在定义对象时分别代入实际的类型名,如: someclassint,doubleobj 【实际问题】 Typedef CArrayCGeoPoint,CGeoPoint CCurve //一条等值线曲线的点集的坐标 Typedef CTypedPtrListCPtrList,CCurve*CCurveList//等值线曲线链表 【分析】 (1)templateclass TYPE,class ARG_TYPE class CArray:public CObject TYPE:模板参数,指定数组中存储的对象类型。 ARG_TYPE:模板参数,指定用于存取数组中所存对象的参数类型。通常是对TYPE的引用。 CArray:按需要动态分配 常用成员函数:Add,GetSize,SetSize,GetAt(返回给定下标处的元素的值),InserAt(将一个元素插入到指定的下标处,RemoveAt; 类似的数组模板类还有:CObArray,CByteArray,CPtrArray,CStringArray... (2) templateclass BASE_CLASS,class TYPE   class CTypedPtrList: public BASE_CLASS BASE_CLASS:类型指针列表的基类;且必须是一个指针列表类CObList,CPtrList TYPE:存放在基类列表中的类

文档评论(0)

htfyzc + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档