C++程序设计第9章 类属机制-模板.ppt

C++程序设计第9章 类属机制-模板.ppt

ID:48153234

大小:130.00 KB

页数:30页

时间:2020-01-17

C++程序设计第9章 类属机制-模板.ppt_第1页
C++程序设计第9章 类属机制-模板.ppt_第2页
C++程序设计第9章 类属机制-模板.ppt_第3页
C++程序设计第9章 类属机制-模板.ppt_第4页
C++程序设计第9章 类属机制-模板.ppt_第5页
资源描述:

《C++程序设计第9章 类属机制-模板.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、第九章类属机制--模板主要内容类属(泛型)的基本概念函数模板类模板模板的复用C++标准模板库简介类属(泛型)程序设计在程序设计中,经常需要用到一些功能完全相同的程序实体,但它们所涉及的数据的类型不同。例如,对不同元素类型的数组进行排序的函数:voidint_sort(intx[],intnum);voiddouble_sort(doublex[],intnum);voidA_sort(Ax[],intnum);这三个函数的实现基本是一样的。classIntStack{intbuf[100];public:boolpush

2、(int);boolpop(int&);};classDoubleStack{doublebuf[100];public:boolpush(double);boolpop(double&);};classAStack{Abuf[100];public:boolpush(A);boolpop(A&);};再例如,元素类型不同的栈类这三个类的实现基本也是一样的。类属(泛型)程序设计(续)对于前面的三个排序函数和三个栈类,如果能分别只用一个函数和一个类来描述它们将会大大简化程序设计的工作。在程序设计中,一个程序实体能对多种类型

3、的数据进行操作或描述的特性称为类属性。(参数化多态)具有类属性的程序实体通常有:类属函数类属类基于具有类属性的程序实体进行程序设计的技术称为:类属程序设计(或泛型程序设计,GenericProgramming)。类属函数类属函数是指一个函数能对不同类型的参数完成相同的操作。C++提供了两种实现类属函数的机制:采用通用指针类型的参数函数模板通用指针参数实现类属函数函数定义:voidsort(voidbase,//需排序的数据首地址unsignedintcount,//数据元素的个数unsignedintelement_si

4、ze,//数据元素的尺寸int(cmp)(constvoid,constvoid))//比较两个元素的函数{/不论采用何种排序算法,一般都需要对数组进行以下操作:1、取第i个元素(char)base+ielement_size2、比较第i个和第j个元素的大小(cmp)((char)base+ielement_size,(char)base+jelement_size)3、交换第i个和第j个元素charp1=(char)base+ielement_size,p2=(char)base+jelement_size;for(i

5、ntk=0;k(int)p2)return1;elsereturn0;}intdouble_compare(constvoidp1,constvoidp2)//比较double类型元素大小。{if

6、((double)p1<(double)p2)return–1;elseif((double)p1>(double)p2)return1;elsereturn0;}intA_compare(constvoidp1,constvoidp2)//比较A类元素大小。{if((A)p1<(A)p2)//类A需重载操作符:(A)p2)//类A需重载操作符:>return1;elsereturn0;}......inta[100];sort(a,100,sizeof(int),int_c

7、ompare);doubleb[200];sort(b,200,sizeof(double),double_compare);Ac[300];sort(c,300,sizeof(A),A_compare);函数模板在C++中,实现类属函数的另外一种办法是用函数模板。templatevoidsort(Telements[],unsignedintcount){/1、取第i个元素elements[i]2、比较第i个和第j个元素的大小elements[i]

8、mp=elements[i];elements[i]=elements[j];elements[j]=temp;/}函数模板是指带有类型参数的函数定义,其格式如下:template<返回值类型><函数名>(<参数表>){......}其中,T1、T2等是函数模板的类型参数<返

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

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

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