C++之函数模板

一.什么是函数模板

     在介绍函数模板前先看段代码:


 

对,就是函数重载,我们知道函数重载基于不同数据类型实现类似操作,那么如果数据类型比较多的时候怎么办呢?只要有新类型出现,就要重新添加对应函数,而且代码函数体都相同,但代码复用率却不高。那么可不可以使用预处理指令,可以,但是安全性却不高。所以我们引入函数模板。那什么是函数模板?

函数模板:

代表了一个函数家族,该函数与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。

 

 

.函数模板的语法:

函数模板的定义格式:

template<typename Param1, typename Param2,...,class Paramn>

返回值类型 函数名(参数列表)

{

...

}

其中template是声明函数模板的关键字。<typename Param1, typename Param2,...,class Paramn>为模板参数表 typename定义模板参数的关键字当然也可以是class(但不可以使用struct,

模板函数也可定义成内联函数:

template<typename T>

inline T Add(const T _left, const T _right)

{

return (_left + _right);

}

注意:inline关键字必须放在模板形参表之后,返回值之前,不能放在template之前。

 

**模板是一个蓝图,它本身不是类或者函数,编译器用模板产生指定的类或者函数的特定类型版本,产

生模板特定类型的过程称为函数模板实例化。

函数模板实例化:

template <typename T>

void swap(T &x,T &y)

{

  T temp;

  temp = x;

  x = y;

  y = temp;

}

void main()

{

  int x = 8;

  int y = 6;

  cout <<"交换位置前x,y的值x =" << x <<"  " << "y = "<< y << endl;

  swap(x,y);

  cout <<"交换位置后x,y的值x =" << x <<"  " << "y = "<< y << endl;

  float a = 2.6f;

  float b = 5.8f;

  cout <<"交换位置前a,b的值a =" << a <<"  " << "b = "<< b << endl;

  swap(a,b);

  cout <<"交换位置后a,b的值a =" << a <<"  " <<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值