欢迎来到天天文库
浏览记录
ID:55631247
大小:4.30 MB
页数:155页
时间:2020-05-21
《C进阶课程讲义.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、传智播客C++进阶课程讲义传智扫地僧6、函数模板和类模板前言C++提供了函数模板(functiontemplate)。所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能。1)C++提供两种模板机制:函数模板、类模板2)类属——类型参数化,又称参数模板使得程序(算法)可以从逻辑功能上抽象,把被处理的对象(数据)类型作为参数传递。总结:Ø
2、模板把函数或类要处理的数据类型参数化,表现为参数的多态性,称为类属。Ø模板用于表达逻辑结构相同,但具体数据元素类型不同的数据对象的通用行为。6.1函数模板6.1.1为什么要有函数模板需求:写n个函数,交换char类型、int类型、double类型变量的值。案例:#includeusingnamespacestd;/*voidmyswap(int&a,int&b){intt=a;a=b;b=t;}voidmyswap(char&a,char&b){chart=a;a=b;b=t;}*///template关键字告诉C++编译器我要开始泛型了.你不要随便报
3、错//数据类型T参数化数据类型templatevoidmyswap(T&a,T&b){Tt;t=a;a=b;b=t;}voidmain(){//chara='c';intx=1;inty=2;myswap(x,y);//自动数据类型推导的方式floata=2.0;floatb=3.0;myswap(a,b);//自动数据类型推导的方式myswap(a,b);//显示类型调用cout<<"hello..."<
4、类型形式参数的形式为:typenameT1,typenameT2,……,typenameTn或classT1,classT2,……,classTn函数模板调用myswap(a,b);//显示类型调用myswap(a,b);//自动数据类型推导6.1.3函数模板和模板函数6.1.4函数模板做函数参数#includeusingnamespacestd;templatevoidsortArray(T*a,T2num){Ttmp;inti,j;for(i=0;i5、voidpirntArray(T*a,intnum){inti=0;for(i=0;i(a,num);sortArray(a,num);//显示类型调用模板函数<>printf("6、排序之后");pirntArray(a,num);cout<<"hello..."<usingnamespacestd;tem7、platevoidmyswap(T&a,T&b){Tt;t=a;a=b;b=t;cout<<"myswap模板函数do"<(cData,iData);//结论函数模板不提供隐式的数据类型转换必须是严格的匹配myswap(cData,iData);//mysw
5、voidpirntArray(T*a,intnum){inti=0;for(i=0;i(a,num);sortArray(a,num);//显示类型调用模板函数<>printf("
6、排序之后");pirntArray(a,num);cout<<"hello..."<usingnamespacestd;tem
7、platevoidmyswap(T&a,T&b){Tt;t=a;a=b;b=t;cout<<"myswap模板函数do"<(cData,iData);//结论函数模板不提供隐式的数据类型转换必须是严格的匹配myswap(cData,iData);//mysw
此文档下载收益归作者所有