函数模板就是通用的函数,它使用泛型来定义函数,泛型可用具体的类型替换,通过将类型作为参数传递给模板,使编译器生成该类型函数。
也就是说,函数参数的类型可以不确定。例如,写一个交换数据 a
和 b
的函数 swap
,参数既可以是 int
类型数据,也可以是 double
类型数据。如果不用模板,则需要写两个函数,使用模板的话就能进行统一。
复制代码
1
2
3
4
5
6
7
8
9template <typename AnyType> void swap(AnyType &a, AnyType &b) { AnyType temp; temp = a; a = b; b = temp; }
关键字 template
和 typename
是必需的,typename
可用 class
替换,AnyType
是类型名,符合 C++ 命名规则即可。必须使用尖括号 <>
。像使用常规函数一样使用即可。
并非所有的模板参数必须是模板参数类型。
复制代码
1
2
3
4
5
6
7int main() { int a = 1, b = 2; swap(a, b); double x = 1.1, y = 2.2; swap(x, y);
模板本身不会创建任何函数,只是告诉编译器如何定义函数。需要使用 int
类型时,会用 int
替换 AnyType
,使用 double
类型时,会用 double
替换 AnyType
,这一过程将由编译器自动完成。使用模板虽然代码量少了,实际上可执行程序没有缩短。
模板并非可以处理所有的类型,上面的例子就无法处理数组类型。可以再写一个模板,模板也能重载。
在重载的情况下,如果有常规函数,也有模板函数,调用函数时优先匹配常规函数,再匹配模板函数。
最后
以上就是碧蓝小笼包最近收集整理的关于C++ 函数模板的全部内容,更多相关C++内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复