函数模板

函数模板:就是建立一个通用函数,不用具体指定他所用到的数据类型(包括返回值类型,形参类型,局部变量类型),用一个虚拟类型来代替,等到函数被调用的时候,会根据传进去的参数自行推出虚拟类型所推出来的真正类型。这个通用函数就称为函数模板。

在函数模板中,数据的值和类型都可以被参数化。

类模板:
template<typename T,typename K,typename U,..> //后面不加分号
class 类名
{
 ...;
}
类模板和函数模板都是以template开头,也可以用class,后面跟类型参数,类型参数不可以是空的,并且需要用“,”隔开。
一般情况下,类型参数用T K U 三种是比较多的。

template<typename T,typename K,typename U,..> //模板头
返回值类型 类名<typename T,typename K,typename U,..>::函数名(形参列表)  //函数头
{
    ...;
}
模板头和函数头可以合并到一行,也可以分成两行。

类模板和函数模板的区别:
类模板在实例化的时候必须指明数据类型,编译器不能根据指定的数据推出具体类型。如:Point<int, int> p1(10, 20);
函数模板可以指定也可以省略。

实例化的时候,模板里面也可以和平时一样用new来实现:Point<int, int> *p1 = new Point<int, int>(10, 109);
注意:等号两边都要指明具体的数据类型,并且要保持一致。

当使用同一种算法(同一个函数体)时,可以用函数模板,使用模板的函数重载只能通过函数参数的个数来区别不同,而普通函数的重载是既可以通过函数参数的个数来区分不同,也可以通过函数的参数类型来区分不同。          

 

 

 

 

 

 

 

 

 


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值