概述
函数模板就是通用的函数,它使用泛型来定义函数,泛型可用具体的类型替换,通过将类型作为参数传递给模板,使编译器生成该类型函数。
也就是说,函数参数的类型可以不确定。例如,写一个交换数据 a
和 b
的函数 swap
,参数既可以是 int
类型数据,也可以是 double
类型数据。如果不用模板,则需要写两个函数,使用模板的话就能进行统一。
template <typename AnyType>
void swap(AnyType &a, AnyType &b)
{
AnyType temp;
temp = a;
a = b;
b = temp;
}
关键字 template
和 typename
是必需的,typename
可用 class
替换,AnyType
是类型名,符合 C++ 命名规则即可。必须使用尖括号 <>
。像使用常规函数一样使用即可。
并非所有的模板参数必须是模板参数类型。
int 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++ 函数模板所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复