C++ 函数模板

函数模板就是通用的函数,它使用泛型来定义函数,泛型可用具体的类型替换,通过将类型作为参数传递给模板,使编译器生成该类型函数。

也就是说,函数参数的类型可以不确定。例如,写一个交换数据 ab 的函数 swap,参数既可以是 int 类型数据,也可以是 double 类型数据。如果不用模板,则需要写两个函数,使用模板的话就能进行统一。

template <typename AnyType>
void swap(AnyType &a, AnyType &b)
{
	AnyType temp;
	temp = a;
	a = b;
	b = temp;
}

关键字 templatetypename 是必需的,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,这一过程将由编译器自动完成。使用模板虽然代码量少了,实际上可执行程序没有缩短。

模板并非可以处理所有的类型,上面的例子就无法处理数组类型。可以再写一个模板,模板也能重载。

在重载的情况下,如果有常规函数,也有模板函数,调用函数时优先匹配常规函数,再匹配模板函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值