在c++中用到的主要技术,一个是面向对象,一个是 就是泛型编程,而泛型编程的主要实现技术就是利用模板技术实现的.可以看到c++提供了两种模板机制,一种是函数模板,一种是类模板,
我们这里先说,函数模板.
比如我们现在写一个函数 void func(int a),现在我们先不去写这个参数的类型,比如int,写成T,
然后返回值的类型也先不去固定,也写成T,这样就变成了T func(T a),这样就是一个函数的模板,
可以看到他可以把返回值的类型和参数的类型,都抽象出来了.
可以看到上面,已经写出了,函数模板的声明语法.
然后我们再去自己写代码去使用一下.
首先我们写一个普通的,交换整型数据的交换函数
然后我们再去写一个交换浮点型数据的,交换函数.
然后我们再去写一个test01方法,然后调用swapInt,去看看效果
然后把交换后的数据打印出来看看
可以看到没问题对吧
然后我们再去调用一下swapDouble,交换一下,两个浮点型数据
可以看到也没问题对吧.
但是,我们知道c语言有很多的类型,比如有,float,int,double,还有自定义的类型,比如我们之前写的person等等.这么多类型,不能每个用的时候,都写一个交换函数吧,太麻烦了,
换个时候我们就可以用模板函数,来解决这个问题了.
可以看到上面两个函数,除了参数类型,其他都一样.
这样的情况,就可以使用模板函数了.
可以看到上面,我们通过
template 这样就声明了一个模板,
注意,可以看到因为我们还不知道参数的类型是什么,是整型啊,浮点型啊,还是什么类型,
事前不知道,所以我们用了typename T,用了这个T来表示.
然后声明了模板以后,接着下面再去做一个,利用模板实现这个mySwap模板函数.可以看到,
我们定义的这个函数的参数类型是T,因为我们不确定是要交换什么类型的参数.
然后可以看到上面我们,去声明ab,两个整型,然后调用mySwap去测试,可以看到没问题对吧.
可以看到,上面我们直接调用的mySwap(a,b),没有指定数据类型,这个时候也没有报错,
为什么呢?
这是因为,这个时候是c++编译器,自动推导的数据类型,我们传入的a,b都是int类型,c++
编译器就自动推导出来了,这两个数据都是int类型的.
执行看结果也没问题对吧
然后我们再去使用一种调用方法
mySwap(a,b);这样来用一下,这样可以看到我们明确的指定了
参数的类型是int,他就直接把参数当成int类型了.
执行看结果没问题,这样使用也行
然后我们可以去总结一下,在c++中的,模板函数的使用语法
类型参数化.
可以看到上面也说了函数模板的使用,可以使用自动类型推导也就是上面那种
mySwap(a,b),不指定参数类型的使用方式,一种是显示指定类型,
也就是上面那种mySwap(a,b)的使用方式.
声明:本文部分素材转载自互联网,如有侵权立即删除 。
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
暂无评论内容