函数模板的基本格式是什么?
模板定义以关键字template开始,后接模板形参表,模板形参表是用尖括号括住的一个或多个模板形参的列表,形参之间用都好分隔。
使用函数模板时,编译器会推断哪个(或哪些) 模板实参绑定到模板形参。一旦编译器确定了实际的模板实参,就称它实例化了函数模板的一个实例。可以简单的认为编译器将实参跟模板结合在一起,生成了那个想要的那个函数。如可以这样调用:selectSort(myCompare, myArray, 6);其中myArray可以是整型、浮点型或者字符型。
通过上面的例子编写的算法模块从单一的功能转变成多项功能,代码重用性提高,同时通过回调给用户留下了接口,交互性以及灵活性更强。
函数模板总结
下面再总结一下编写函数模板的格式以及注意点(抄的教科书上的):
函数模板
形式:
template
Function
或:
template
Function
更通用的形式:
template
Function
在这些形式中,TypeParam...是通用类型形参;每个specifier是关键词typename或class;而Function是这个函数的原型或定义。
注意:
单词template是一个C++关键字,规定其后所跟的是一个函数的模式,而不是一个实际的函数原型或定义。关键字typename和class可以在一个类型形参列表中交换使用。相对于“正常的”形参(以及实参)出现在圆括号内,类型形参出现在尖括号内。和正规的函数不同,一个函数模板不能分散在多个文件中,也就是说,不能把它的原型放在一个头文件中,而把它的定义放在另一个实现文件中。函数模板必须全部放在头文件中。一个函数模板仅仅是描述根据给定的实际类型产生不同函数的一个模式。这个创造函数的过程被称为实例化。 6. 在通用形式里,每个类型形参必须在函数的形参列表中至少出现过一次。原因是编译器仅仅依靠函数调用中的实参的类型来决定绑定什么类型到类型形参。Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有