C++函数模板介绍(template)

C++函数模板介绍

函数模板的引入

一般来讲,我们在书写一个函数时,他的参数类型是确定的。比如有下面的函数原型:

void Swap(int &a,int &b);

从函数原型可以看到,这是一个交换函数。功能是将传入的a,b的值进行交换。
但是我们也可以看到,传入的参数都是int型的,因此只能交换两个int型的值。
那么问题来了:如果我向交两个double型的变量,我是不是又要写一个函数呢(当然,运用函数重载确实可以体现C++的多态性),但是还有其它类型呢?long,sort,long long…
所以我们需要引入另一个概念——模板 来实现这样的功能,使得我们只写一个函数就完成所有的泛型参数的传入。

函数模板关键字——template

函数模板的关键字是——template

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

通过上面代码可以看到,通过关键字template定义了一个泛型类型,用关键字typename来定义,其中AnyType只是一个名字,可以反正任意C++的规范命名,比如“T”(而且这种命名也更常见)也可以

template <typename T>

例子

现在我们,通过一个例子来查看模板函数的定义和使用

#include<iostream>
using namespace std;
template <typename T>
void Swap(T &a,T &b);

int main()
{
	int i=10;
	int j=20;
	cout<<"i,j="<<i<<","<<j<<".\n";
	cout<<"Using compiler generated int swapper:\n";
	Swap(i,j);
	cout<<"Now i,j="<<i<<","<<j<<".\n";
	
	double x=24.5;
	double y=81.7;
	cout<<"x,y="<<x<<","<<y<<".\n";
	cout<<"Using compiler generated double swapper:\n";
	Swap(x,y);
	cout<<"Now x,y="<<x<<","<<y<<".\n";
	return 0;
}

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

运行之后,输出:
在这里插入图片描述
可以看到,两次调用Swap函数,一次是int型,一次是double型,但是只写了一个函数,节省了很多的代码量

——————————————————————————————————————————————————————————————————————
参考书籍:《C++ Primer Plus 6th》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值