1 / 32
文档名称:

软件技术基础作业—模板编程.pptx

格式:pptx   大小:218KB   页数:32页
下载后只包含 1 个 PPTX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

软件技术基础作业—模板编程.pptx

上传人:12344 2020/2/16 文件大小:218 KB

下载得到文件列表

软件技术基础作业—模板编程.pptx

相关文档

文档介绍

文档介绍:函数、类模板《软件技术基础》补充2电子科技大学物理电子学院赖生建主要内容模板的概念函数模板类模板《软件技术基础》补充2—模板******@《软件技术基础》补充2—模板******@{pare(inta,intb){x=a;y=b;}intmax(){return(x>y)?x:y;}intmin(){return(x<y)?x:y;}private:intx,y;};pare_float{pare(floata,floatb){x=a;y=b;}floatmax(){return(x>y)?x:y;}floatmin(){return(x<y)?x:y;}private:floatx,y;}这两个类的功能是对两个整数(浮点数)作比较,可以通过调用成员函数max和min得到两个整数中的大者和小者。两个或多个类,其功能是相同的,仅仅是数据类型不同,能否有办法减少重复性的工作?1模板的概念《软件技术基础》补充2—模板******@++在发展的后期增加了模板(template)的功能,提供了解决这类问题的途径。可以声明一个通用的类模板,它可以有一个或多个虚拟的类型参数。如对以上两个类可以综合写出以下的类模板:template<classnumtype>//声明一个模板,pare//pare{pare(numtypea,numtypeb){x=a;y=b;}numtypemax(){return(x>y)?x:y;}numtypemin(){return(x<y)?x:y;}private:numtypex,y;};1模板的概念《软件技术基础》补充2—模板******@,可以看到有两处不同:(1)声明类模板时要增加一行:template<class类型参数名>(2)原有的类型名int换成虚拟类型参数名numtype在建立类对象时,如果将实际类型指定为int型,编译系统就会用int取代所有的numtype,如果指定为float型,就用float取代所有的numtype,这样就能实现“一类多用”。如果说类是对象的抽象,对象是类的实例,则类模板是类的抽象,类是类模板的实例。pare<int>cmp(4,7);即在类模板名之后在尖括号内指定实际的类型名,在进行编译时,编译系统就用int取代类模板中的类型参数numtype,这样就把类模板具体化了,或者说实例化了。1模板的概念《软件技术基础》补充2—模板******@//<classnumtype>//声明一个模板,pare//pare{pare(numtypea,numtypeb){x=a;y=b;}numtypemax(){return(x>y)?x:y;}numtypemin(){return(x<y)?x:y;}private:numtypex,y;};#include<>intmain(){Compare<int>cmp_i(4,7);intimax=();cout<<"Max:"<<imax<<pare<float>cmp_f(,);floatfmax=();cout<<"Max:"<<fmax<<endl;return1;}1模板的概念模板概念它可以实现类型参数化,即把函数或类中的数据类型定义为参数,从而解决参数多态性问题,实现代码可重用性模板分类(按用途)函数模板类模板参数实例化指给函数模板或类模板带入实际的类型参数C++中把经过参数实例化的函数模板称为模板函数,把经过参数实例化的类模板称为模板类《软件技术基础》补充2—模板******@、模板函数、模板类和对象之间的关系《软件技术基础》补充2—模板******@《软件技术基础》补充2—模板******@:template<模板参数表>返回类型函数名(函数模板形参表){函数体}设计一个求两个数中较大数的函数模板template<classT>Tmax(Tx,Ty){return(x>y)?x:y;}template<typenameT>Tmax(Tx,Ty){return(x>y)?x:y;}2函数模板模板函数的生成(函数模板的实例化)基本概念函数模板在具体调用时必须进行参数实例化经参数实例化而生成的具体函数称为模板函数对模板形参进行实例化的参数称为模板实参生成模板函数的方法显式方法:在函数模板调用前,用基本数据类型或用户自定义数据类型对函数模板进行参数实例化,生成模板函数《软件技术基础》补充