ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【C++】《C++ 17 入门经典》读书笔记 20 ---- 函数模板

2019-08-13 20:05:57  阅读:145  来源: 互联网

标签:20 定义 读书笔记 C++ 实例 参数 类型 模板 函数


函数模板本身不是函数定义,而是定义一系列函数的蓝图或处方。函数模板是参数化的定义,函数实例由一个或多个参数值来创建。

编译器使用函数模板时,在必要时去生成函数定义。从函数模板中生成的函数定义称为模板的一个实例或模板的实例化。

示例:

template<typename T> T larger(T a, T b);

函数模板的开头是关键字 template, 表示这是一个模板。其后是一对尖括号,里面包含一个或多个模板参数的列表。在本例中只有一个参数 T。T 通常用作参数名,因为大多数参数都是类型,但参数可以使用任何名称:my_type 和 Comparable 这样的名称都是有效的。

typename 是一个关键字, 它表示  T 是类型。因此,将 T 称为模板类型参数。这里也可以是 class 关键字,但我们喜欢使用 typename, 因为类型实参可以是基本类型,而不仅仅是类类型。

定义中是其他内容类似于普通的函数,但其中有参数 T。编译器会创建模板的实例,用指定的类型替换定义中的 T。在初始化时赋值给类型参数  T 的类型称为模板类型实参。

可以把模板放在源文件中,就像处理普通函数定义一样。也可以为函数模板指定原型。

在使用从模板中生成的实例之前,模板的原型或定义必须包含在源文件中。

template <typename T>
T larger (T a, T b)
{
    return a > b ? a : b;
}

 

标签:20,定义,读书笔记,C++,实例,参数,类型,模板,函数
来源: https://blog.csdn.net/kingkee/article/details/99429539

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有