C++ 的函数模板和类模板
介绍
C++提供函数模板(function template)。所谓的函数模板,实际上是建立一个通用函数,其函数的类型和形参类型不具体制定,有一个虚拟的那类型来代表。这个通用函数就成为函数模板。凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在末班中定义一次即可。在调用函数时,系统会根据形参的类型来取代模板的虚拟类型,从而实现了不同函数的功能。
C++ 提供两种模板机制: 函数模板,类模板来进行泛型编程
类属 – 类型参数化,又称参数模板
使程序(算法)可以从逻辑功能上抽象,把被处理的对象(数据)类型作为参数传递。
总结:
- 模板把函数或类要处理的数据类型参数化,表现为参数的多态性,成为类属。
- 模板用于表达逻辑的结构相同,但具体数据元素类型不同的数据对象的通用行为。
- 让算法和数据类型分离
函数模板
为什么要有函数模板
当函数业务逻辑相同但参数不同时,我们就需要用到函数模板。
函数模板做函数参数的本质是类型参数化,好处就是可以编写与类型无关的代码;
注意:模板的声明或定义只能在全局,命名空间或类范围内进行。即不能在局部范围,函数内进行,比如不能在main函数中声明或定义一个模板。
定义函数模板的语法格式如下所示:
1 | template<typename 形参名,typename 形参名...> |
显式实例化
语法格式如下所示
1 | template 函数返回值类型 函数名<实例化的类型>(参数列表); |
注意这是声明语句,要以分号结束,<>中是显式实例的数据类型,即要实例化出一个什么类型的函数,例如,显示实例化为int,则在调用时,不是int类型的数据会转换为int类型进行计算。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 极客丹尼!
评论