函数模板

结构

template <typename type1>type1 ave(type1 a, type1 b)
{
	type1 x = a * b;
	type1 p [100];
	return (a + b) / 2;
}
//type1 类型名称

关键字:

  • template<> :函数模板必须带的关键字,声明这是一个函数模板
    • <>:填入函数类型名称
    • typename 类型名称 :类型名称

使用方法:

template<>
int* ave(int* a,int *b)
{
     return 1;
}//函数模板的例外情况

int main()
{
		//函数模板与普通函数的调用方法相同
		//函数模板可以显示的指定一个类型
		//下例中执行的是 int ave(int a,int b) 而不是 float ave(float a, float b);
		std::cout << ave<int>(12.0f, 250.5f) << std::endl;

		//隐式调用时,函数模板会根据传入的参数的类型进行转换
		std::cout << ave(11, 12) << std::endl;
		
		//函数模板也可以为单个参数指定类型
		std::cout << ave((char)11 ,(char)12);

		//函数模板指针的错误用法
		int a{1},b{2},c{3};
		c = *ave(&a, &b);//此时传入的不是a、b的值,而是传入指针*a、*b
		//如果定义了函数模板的例外情况 则会调用例外来实现
}

要点

   函数模板中声明的模板类型可以当作一个类型来使用,使用范围与其他类型相同。可以用来声明变量、指针、数组等;

   函数模板可以以显式的方式为一个模板函数指定一个类型。

   函数重载的优先级大于函数模板。如果有函数重载的函数存在调用函数重载,不存在函数重载,但是存在例外模板函数时,会优先调用例外模板函数。

    函数模板也可以重载,函数模板的重载与普通函数的重载类似,通过参数数量来进行区分。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值