C++模板函数

模板函数的声明

先来看一个正常声明的函数形式:

//函数1
ReturnType func(Type1 x1,Type2 x2,...,Type9 x9)
{
    return (ReturnType) x;
}

对于函数应用模板应该这样声明:

//函数2
Template<typename T,typename U> void func(T x1,U x2)
{
   ....
}

可以看出实际上就是在函数之前加上一个 t y p e n a m e typename typename的声明 T 、 U T、U TU,即:

Template<typename T,typename U>

有了这个 T T T之后,可以在函数的任意一个部分用到它,比如返回值、参数类型、函数内部定义的任何类型如 i n t 、 f l o a t int、float intfloat等。而基于这个模板函数的声明,可以在其上新加函数声明,用于特定类型参数的函数声明。比如:

//函数3
Template<> void func<int,float>(int x1,float x2)
{
    .....
}

之后如果传入的 T T T i n t int int U U U f l a o t flaot flaot,就可以调用这个 f u n c func func函数。

再说一些比较特殊类型的 T T T,我们之前见到的都是 t y p e n a m e typename typename形式的,然而 T T T也可以是 i n t 、 b o o l int、bool intbool类型的参数。比如声明如下的函数:

//函数4
Template<int T,typename U> void func1()
{
     U b;
     printf("%d",T);
 }

这个时候如果想要声明特定类型的 f u n c 1 func1 func1参数模板,可以这样声明:

Template<> void func1<1,int>()//函数5
{
     printf("这里的T为1!");
 }

这个时候如果想要调用这个 f u n c 1 func1 func1,传入的 T T T值必须为 1 1 1.

模板函数的使用

如果想要调用函数 4 4 4,需要这样写:

func1<2,int>();

当然也可以省去显示的类型说明,比如调用函数 2 2 2

func(1,2);

这里面就是自动转换类型了。
如果想要调用特定类型的函数 5 5 5,需要这样写:

func1<1,int>();

如果第一个参数不是 1 1 1,那么推导不出来函数 5 5 5.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值