c++教程第18章

c++教程第18章

ID:43188424

大小:68.50 KB

页数:26页

时间:2019-10-02

c++教程第18章_第1页
c++教程第18章_第2页
c++教程第18章_第3页
c++教程第18章_第4页
c++教程第18章_第5页
资源描述:

《c++教程第18章》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第18章模板2021/8/311讲授内容类属机制函数模板的定义与使用类模板的定义与使用2021/8/312例子1:函数模板例子templatevoidsortArray(ElementTypeb[],intlen){for(intpass=0;passb[i]){ElementTypehold;hold=b[pass];b[pass]=b[i];b[i]=hold;}}2021/8/313

2、18.1类属机制(1/2)从功能来看,有些程序非常相似,只是处理对象(数据)的类型不同例6_4中的程序voidsortArray(intb[],intlen);voidsortArray(doubleb[],intlen);可以考虑提供具有相同逻辑功能的程序,而将数据类型作为参数——类属编程C++中的模板:类模板和函数模板2021/8/31418.1类属机制(2/2)更好的代码重用性重用源代码用户使用模板时,编译器替换模板参数(类型)2021/8/31518.2函数模板(1/5)对不同类型的数据执行相似的操作函数重载函数模板函数重

3、载——代码冗余增加编程负担程序的维护问题(如功能修改,算法变动)2021/8/31618.2函数模板(2/5)函数模板为所有的函数提供唯一的一段函数代码置换代码中的类型参数得到模板函数——实例化函数模板不是函数,不能被执行实例化后的模板函数是真正的函数,可以被执行函数模板模板函数实例化2021/8/31718.2函数模板(3/5)函数模板的定义都是以关键字template开头template之后<>中是函数模板的参数列表函数模板的参数称为类型参数,其类型为class或typename,如templatetempla

4、te2021/8/31818.2函数模板(4/5)<…>之后是模板的函数定义,可以将类型参数用于函数返回值、参数或局部变量的类型声明每个类型参数名要在函数的参数列表中至少出现一次(为什么?)类型参数名的作用域限于函数模板的范围内2021/8/319例子1:函数模板例子templatevoidsortArray(ElementTypeb[],intlen){for(intpass=0;pass

5、len-1;i++)if(b[pass]>b[i]){ElementTypehold;hold=b[pass];b[pass]=b[i];b[i]=hold;}}2021/8/311018.2函数模板(5/5)函数模板规定了对数据的处理流程某些数据类型(类型参数)要等到模板实例化时再确定具体的类型函数模板的实例化由编译器来完成根据函数调用的实参类型确定类型参数的具体类型用具体类型替换模板的函数定义中所出现的所有类型参数,完成函数模板的实例化2021/8/3111例子2:使用函数模板实现数组的排序和输出(1/4)#include

6、ostream.h>#defineSIZE8templatevoidsortArray(ElementTypeb[],intlen){for(intpass=0;passb[i]){ElementTypehold;hold=b[pass];b[pass]=b[i];b[i]=hold;}}2021/8/3112templatevoiddisplayArr

7、ay(ElementTypeb[],intlen){for(intindex=0;index<=len-1;index++)if(index!=len-1)cout<

8、<"Beforesorting:";cout<<"ai:t";displayArray(ai,SIZE);sortArray(ai,SIZE);cout<<"Aftersorting:";cout<<"ai:t";displayArra

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。