函数模板——1

函数模板

简介:今天学到函数模板时,发现函数模板还是比较复杂,所以写篇博客帮助自己学习,也分享给大家,希望有帮助。
1:函数模板简介:我们引入函数模板的作用是,当我们使用的实参类型不同时,单一的函数定义难以处理多样的类型,因此引入了一个容器,他的外壳确定了,但是内容却为定。
2.函数模板的定义方法:
在C++11中,我们使用这种方法
在这里插入图片描述
template指出建立一个模板,typename指出模板的名字。
在C++98中,我们使用class;
在这里插入图片描述
2.函数模板的初步使用。
函数模板的使用和普通函数差不多,很简单,我做一个简单的实例:
在这里插入图片描述
在这里插入图片描述
简单做了一个函数模板,随手写的,所以算法很简陋。在这个例子中,我们传入了int和double的实参所以自动选择了模板,这属于隐式具体化。
2.显示具体化。
显示具体化的定义方式:和函数模板很相似。
在这里插入图片描述
这是一个简单的具体化,还会报错,cout<<需要重载,因为未知具体类型,请勿抓着不放,我只是随便写一个演示。其中具体化格式为:template<> 函数返回值 函数名<具体化类型>(具体化类型,具体化类型,…) 其中<具体化类型名>是可选操作;
具体化调用具体实例:
在这里插入图片描述
在这里插入图片描述
3.模板的重载。
模板的算法是相同的,但是实际上很多时候我们不同的参数有不同的算法,这时候就可以使用模板的重载来操作。记住
模板参数也可以不是模板类型

简单重载实例:
在这里插入图片描述
在这里插入图片描述
这就是一个简单的重载,在我使用模板具体显示化的时候,我发现,显示化参数应该和实例之一相同,不然会报错。
4实列化和具体化
实例化:实例化是函数的定义,我们生成模板时,并没有对一个函数定义,而是生成了一种方案。我们在调用函数时,比如上面的:show(a,b)其实和普通函数调用不同,他是告诉编译器生成一个int 类型的函数定义。然后调用这个定义。这就是实例化,也叫隐式实例化
4.1.显示实例化:格式为:template 返回值类型 函数名(参数(略))
举个栗子:template void show(int a,int b);
和函数模板的具体化很像。他们的不同之处在于:
显示实例化:使用模板生成具体类型函数定义。
显示模板具体化:使用具体类型的模板生成具体类型函数定义;
相通之处在于:都是生成具体类型的函数,因此。隐式实例化,显示实例化,显示具体化都被称为具体化
5重载解析
内容较为复杂和重要,详情我在特地重开一篇博客来对他进行详细的介绍。如果对你有帮助,点个赞再走吧,谢谢,哈哈哈哈。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值