标签:13 函数 形参 数据类型 typename 类型 模板
13.1 Introduction(引言)
1.模板 是生成类或函数的框架。
- 与类或函数显式指定数据类型不同,模板使用形参。
- 当实际数据类型赋值给形参的时候,才由编译器生成类或函数。
2.函数模板允许功能相同参数类型和返回值类型不同的的两个函数被一个单独的函数取代,
在这个单独的函数里,形参数据类型用T(T表示一种类型)表示,
从而提供一个泛型或类型无关的函数,它适用于所有的数据类型。
13.2 Function templates(函数模板)
1.函数模板的声明由关键字template和包含一个或多个数据类型形参的参数列表构成。
2.形参数据类型前面可以是关键字class,也可以是意义更明确的关键字typename。
3.类型形参T要用尖括号<和>括起来。当同时使用多种数据类型的形参时,它们之间要用逗号分开。
4.这个过程称为模板的实例化,其结果是由编译器产生的一个常规函数。
13.3 Class templates(类模板)
1.模板能够用来生成完整的C++ 类。
- 模板允许一个类用于所有数据类型
2.类模板也称为参数化类型。
参数化类型是由其他数据类型甚至是一些未指定的数据类型来定义的数据类型。
3.引用类模板时必须包含它的形参列表。
4.为了创建模板,首先要写一个非模板特定数据类型的函数或者类。 当这个指定数据类型的函数或者类运行得令人满意后,再用模板形参来取代其中的特定数据类型。
Programming Pitfalls(易犯的错误)
1. 不要以为函数原型中的所有运算符都适合作为传递给模板形参的数据类型。
using the function template maximum() in program P13A for objects of a point class, An error occurs if > is not verloaded in the definition of the point class.
2. 每一个模板形参前都必须写上关键字typename。
模板< typename T1,T2 >会带来一个错误,因为 typename也应该先于T2。
3. 每一个指定的类型形参都必须在函数中使用。
标签:13,函数,形参,数据类型,typename,类型,模板 来源: https://www.cnblogs.com/sparse-shadow/p/16367403.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。