C++程序语言06C

C++程序语言06C

ID:44195448

大小:1.85 MB

页数:31页

时间:2019-10-19

C++程序语言06C_第1页
C++程序语言06C_第2页
C++程序语言06C_第3页
C++程序语言06C_第4页
C++程序语言06C_第5页
资源描述:

《C++程序语言06C》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、C++程序设计实用教程清华大学出版社2008第6章函数第3讲第6章函数函数概述函数的调用机制函数版“评委评分”程序设计递归函数函数重载参数带默认值的函数内联函数函数模板函数应用*趣味程序———高尔顿钉板实验模拟小结本章要点需求牵引学语法6.8函数模板函数模板更加体现了C++语言“将方便让给程序员,把困难留给编译器”的精神。C++允许程序员在源程序级将那些语句完全相同,仅数据类型不同的函数做成模具──函数模板(template)在编译过程中遇到相应的函数调用时,由编译系统根据函数模板自动生成模板函数然后进行编译。省

2、却了程序员编写一批重载函数还不一定能穷尽所有数据类型的麻烦。6.8函数模板6.8.1描述函数模板函数模板描述声明(并非定义)的格式template返回类型函数模板名(形式参数表){//函数模板体}说明template,typename都是C++的保留字;形式数据类型需要用自定义的标识符(如:T,T1,TYPE)表示,代表某种可能的数据类型。6.8函数模板例6.8对于给定的两个实参,返回其中较大值的函数模板templateTMax(Ta,Tb){return(

3、a>b)?a:b;}说明该函数有返回类型,为T所代表的数据类型;该函数有两个形式参数,数据类型亦为T;函数体中涉及的操作(如a>b)能否执行取决于使用该模板的实际数据类型;在函数模板中不变的是操作,可变的是数据类型。返回类型返回类型形参类型6.8函数模板6.8.2函数模板的使用函数模板只是描述了对某种假想的数据类型的数据将要进行的操作。编译系统不会编译函数模板本身,因此,我们称模板为声明(它仅描述了可能进行的操作),而非定义。当编译系统遇到用具体的实际参数使用函数模板时用实际参数的数据类型取代形式数据类型;根据函

4、数模板体的执行语句,自动地为程序员定义一个函数──称为模板函数;然后对所生成的模板函数进行编译(编译系统只检查模板函数的语法)。6.8函数模板接例6.8#includeusingnamespacestd;intmain(){inta=3,b=5;charc=’3’,d=’5’;doublex=3.5,y=5.5;chars[10]=”ABCD”,t[10]=”abcd”;cout<

5、;cout<b)?a:b; }charMax(chara,charb)//T为char{return(a>b)?a:b; }doubleMax(double

6、a,doubleb)//T为double{return(a>b)?a:b; }char*Max(char*a,char*b)//T为char*{return(a>b)?a:b;//比较两个地址值}6.8函数模板6.8.3重载模板函数例6.8中,比较两个字符串的地址值的大小没有意义。应该比较字符串的内容。char*Max(char*a,char*b){returnstrcmp(a,b)>0?a:b;}为此,C++允许重载模板函数并且规定:编译系统首先匹配重载模板函数,而不会生成前面的第四个函数去比较字符串起始地址值

7、的大小。6.9函数应用6.9.1静态局部变量的特性例6.10测试计算时间。要求编写一个函数gettime具有如下功能:调用该函数可设置计时起点返回从所设置的计时起点到目前所间隔的时间(秒)。doublegettime(intrestart=0);//函数原型doublegettime(intrestart)//函数定义{constdoublec=1.0/CLOCKS_PER_SEC;staticclock_tt=clock();if(restart)t=clock();returnc*(clock()-t);}/

8、/clock_t实为long6.9.2排序给定元素个数为n的数组,要求将元素按照其值从小到大或者从大到小的顺序重新排列,这一过程被称为排序。排序是计算机科学与技术领域中的一个基本问题,应用十分广泛。排序操作总是通过比较和交换进行的。不同的排序算法采用不同的策略,其比较和交换的次数是不尽相同的。为了适应更多的数据类型,可将排序算法设计成函数模板。只要某种数据类型能进行比较运

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

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

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