欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    第9章模板ppt课件.ppt

    • 资源ID:4882884       资源大小:125.53KB        全文页数:26页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第9章模板ppt课件.ppt

    第9章 模板,主要内容,知识点1:模板定义知识点2:函数模板与模板函数知识点3:类模板与模板类,知识点1:模板定义,所谓模板,就是将某段程序中的数据类型参数化,使得它能够处理某个范围内的数据类型.而不必为每种可能的类型都建立一个实例,从而避免了重复劳动,增强了程序的灵活性和有效性。模板具有形式类属参数:将数据类型作为模板的参数,参数化的数据类型就是形式类属参数模板须经过实例化后才能使用:实例化是指用某一具体数据类型替代模板中的形式类属参数的过程,该确定的数据类型称为实际类属参数。,知识点2:函数模板与模板函数,基本思想:实际应用中,一些函数的功能相同,唯一的区别只在于处理对象的数据类型不同,若用函数重载实现,则需编写多个函数:例:int max(int i,int j)float max(float i,float j)return ij?i:j;return ij?i:j;编程时只提供一套实现该功能的程序实体,然后将数据类型作为参数传递,这就是模板的思想对不同数据类型的操作完全相同,用函数模板实现更为简洁方便,template 类型 函数名(形式参数表)语句序列,函数模板声明,函数模板定义由模板说明和函数定义组成 模板说明的类属参数必须在函数定义中至少出现一次 函数参数表中可以使用类属类型参数,也可以使用一般类型参数,template,类型形式参数的形式为:typename T1,typename T2,typename Tn 或class T1,class T2,class Tn,例1:#include template T max(T a,T b)return a b?a:b;void main()cout max(3,5)is max(3,5)endl;cout max(y,e)is max(y,e)endl;cout max(9.3,0.5)is max(9.3,0.5)endl;,例2:冒泡排序模板template void SortBubble(ElementType*a,int size)int i,work;ElementType temp;for(int pass=1;pass ai+1)temp=ai;ai=ai+1;ai+1=temp;work=0;if(work)break;,#include void main()int a5=45,20,30,100,5;SortBubble(a,5);for(int i=0;i5;i+)coutaiendl;,函数模板定义时应注意的问题,(1)在函数模板定义template中给出的每一个形式类属参数都必须出现在函数形参表中(2)由编译系统根据函数调用的实际参数类型自动完成函数模板的实例化,不须显式实例化(3)函数模板在实例化过程中不做任何类型转换例:已知函数模板max的两个形参都是形式类属参数TYPE类型的,则以下两个应用错误 max(10,10.5);一个实参是整型,另一个是double型,类型不同,重载函数模板,有些特殊情况需要函数模板参与重载template TYPE max(TYPE x,TYPE y)return(x=y)?x:y;template TYPE max(TYPE x,TYPE y,TYPE z)TYPE w=(x=y)?x:y;return(w=z)?w:z;,template TYPE max(TYPE x,int n)TYPE m=x0;for(int i=0;in;i+)if(mxi)m=xi;return m;void main()float m,x=56,y=-55.8,z=99.1;int data10=1,3,15,7,9,22,4,26,8,10;m=max(x,y);/TYPE被实例化为floatm=max(x,y,z);int t=max(data,10);,在引入类属函数后,确定调用函数的哪个版本所遵循的匹配原则:,(1)如果某一普通函数的形参类型正好与函数调用的实际参数类型匹配,则调用该函数。否则,(2)如果能从同名的类属函数实例化一个函数实例,而该函数的参数类型正好与函数调用的实际参数类型匹配,则调用该实例化的函数。否则,(3)对函数调用的实际参数作隐式类型转换后与非类属函数再作匹配,找到匹配的函数则调用它。否则,(4)提示语法错误。,练习:P369 9.2 第1题P370 9.4 第1题,知识点3:类模板与模板类,类模板的定义:一般形式:template class 类名;形式类属参数表:用尖括号括起来的部分。用逗号隔开不同的形式类属参数,每个类属参数都由class引入类属参数在类的声明中有效,在类外无效在类的定义中,把这些类属参数当数据类型来声明各种变量,例:数组类模板,templateclass Array public:Array(int s);virtual Array();virtual const T,template Array:Array(int s)if(s 1)size=s;else size=1;element=new T size;template Array:Array()delete element;template const T,void main()Array a(5);a.Enter(2,10);couta.Entry(2)endl;,类模板不是类,不能用于创建对象,只有经过实例化后才得到类实例化的一般形式:类属类名字 例:STACK类模板,不能用于创建对象STACKobj;实例化:用实际类属参数int替换形式类属参数ELEMENT_TYPE后,得到一个整形堆栈类,即可用于声明对象。一个类模板可以实例化为多个不同的类,#include#include Array.hvoid main()Array IntAry(5);int i;for(i=0;i DouAry(5);for(i=0;i 5;i+)DouAry.Enter(i,(i+1)*0.35);cout Double Array:n;for(i=0;i 5;i+)cout DouAry.Entry(i)t;coutendl;,练习:P370 9.2第2小题,类属类的继承关系,一个类模板可以作为一个普通类的派生类一个类模板也可作为其它类模板的基类例:#include/声明一个类属类作为基类。template class BASE public:void show(TYPE obj)cout obj n;return;,/声明一个类属类作为BASE的派生类。template class DERIVED:public BASE public:void show2(TYPE1 obj1,TYPE2 obj2)cout obj1 obj2 n;return;,例 96,#includetemplate/定义类模板class A public:A(T x)t=x;void out()cout t endl;protected:T t;,class B:public A/派生一般类 public:B(int a,double x):A(a)y=x;void out()A:out();cout y endl;protected:double y;,void main()A a(123);a.out();B b(789,5.16);b.out();,实例化基类抽象类型参数,自己学习P 363页 9.5 名空间,

    注意事项

    本文(第9章模板ppt课件.ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开