(7.1)--7.1 函数模板的定义和实例化.ppt
-
资源ID:96638130
资源大小:231.88KB
全文页数:10页
- 资源格式: PPT
下载积分:20金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
(7.1)--7.1 函数模板的定义和实例化.ppt
函数模板的定义和实例化函数模板的定义和实例化交换两个int变量的值得Swap函数void Swap(int&x,int&y)int temp=x;x=y;y=temp;交换两个double型变量的值的Swap函数void Swap(int&x,int&y)int temp=x;x=y;y=temp;通用的函数:void Swap(T&x,T&y)T temp=x;x=y;y=temp;实现交换各种类型的变量的值定义函数模板的一般形式为:template 返回类型 函数名(形参表)函数体 函数模板的定义template void Swap(T&x,T&y)T temp=x;x=y;y=temp;(1)在定义模板时,不允许template语句与函数模板之间有任何其他语句。函数模板定义中要注意问题:template int a;/错误,不允许在此位置有任何语句 T Max(T x,T y)(2)不要把这里的class与类的声明关键字class混淆在一起,虽然它们由相同的字母组成,但含义是不同的。为了区别类与模板参数中的类型关键字class,标准C+提出了用typename作为模板参数的类型关键字,同时也支持使用class。如果用typename其含义就很清楚,肯定是类型名而不是类名。函数模板定义中要注意问题:(3)函数模板的类型参数可以不止一个,可根据实际需要确定个数,但每个类型参数都必须用关键字typename或class限定。template T2 func(T1 x,T 2 y)函数模板定义中要注意问题:函数模板的实例化函数模板不是函数,它需要以具体的类型为实参才能生成函数。当编译器遇到程序中对函数模板的调用时,会根据调用语句中实参的具体类型确定模板的类型参数,也就是将虚拟的类型具体化,并用此具体类型替换函数模板中的所有的类型参数,生成能够处理该类型的函数代码,即模板函数。这个过程就叫做函数模板的实例化/函数模板的定义:template void Swap(T&x,T&y)T temp=x;x=y;y=temp;int main()int i1=12,i2=34;Swap(i1,i2);char ch1=S,ch2=T;Swap(ch1,ch2);return 0;/函数模板实例化得到的函数void Swap(int&x,int&y)int temp=x;x=y;y=temp;/函数模板实例化得到的函数void Swap(char&x,char&y)char temp=x;x=y;y=temp;函数模板的实例化编写函数模板的一般方法(1)定义一个普通的函数,数据类型采用具体的普通的数据类型。例如:求两个数中的较大值的普通函数定义如下:(2)将数据类型参数化,即将具体的数据类型(如int)替换成抽象的类型参数名(如T),上面的代码改为:(3)在函数头前用关键字template引出对类型参数名的声明。int max(int a,int b)return ab?a:b;T max(T a,T b)return ab?a:b;template