网站大量收购闲置独家精品文档,联系QQ:2885784924

高级语言程序设计PPT教学课件-第10章_模板.ppt

高级语言程序设计PPT教学课件-第10章_模板.ppt

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
高级语言程序设计PPT教学课件-第10章_模板

10.1模板的概念 10.2函数模板 10.2.1 函数模板说明 10.2.2 使用函数模板 10.2.3 用户定义的参数类型 10.3类模板 10.3.1 类模板说明 10.3.2 使用类模板 10.4模板应用实例 问题引入: int abs(int x) { if(x0) return –x; else return x; } 10.2 函数模板 函数模板可定义一个对任何类型变量操作的通用函数 普通函数vs函数摸板 普通函数只能传递变量参数 函数模板提供了传递类型的机制 步骤 定义函数模板 实例化成相应的模板函数进行调用执行 10.2.1 函数模板说明 10.2.2 使用函数模板 10.2.3 用户定义的参数类型 【例10.2】 注意 函数模板的说明和定义必须是全局作用域。 模板不能被说明为类的成员函数。 函数模板有一个特点,虽然模板参数T可以实例化成各种类型,但是采用模板参数T的各参数之间必须保持完全一致的类型。 【例10.3】分析以下程序中的错误。 10.2.3 用户定义的参数类型 问题: 模板和函数的参数可以是基本数据类型,自定义类型? ——YES 可在函数模板形参表和对模板函数的调用中使用类或其他自定义类型。 【例10.4】 #include iostream.h class coord { int x,y; public: coord (int x1 , int y1 ){x=x1; y=y1;} int getx(){ return x; } int gety() { return y; } }; 10.3 类模板——参数化的类 类模板实际上是函数模板的推广。可以用相同的类模板来组建任何类型的对象集合。 例数组类: 10.3.1 类模板说明 template 模板形参表 类声明 模板参数表可以为以下内容 class 标志符(指明可以接受一个类型参数) 类型说明符 标志符(指明可以接受一个由类型说明符所规定的常量做为参数) 若包含多项内容,则以逗号分隔。 template class T1, int exp1, class T2 class someclass { }; 10.3.2 使用类模板 类模板不能直接使用,必须先实例化为模板类 定义该模板类的对象后才能使用 建立类模板之后,可用下列方式创建类模板的实例: 类名模板实参表 对象表; 模板实参表与该类模板中模板形参表匹配。 类是对象的推广,类模板是类的推广! 10.3.2 使用类模板 例:定义一个带常量表达式参数的类模板 template class T1, int exp1, class T2 class someclass { }; 实例化为模板类 someclass double,500,coord sc; 实例化中所用的实参必须和类模板中定义的形参具有同样顺序和类型,如以下实例化会造成编译错误: someclass double,500U,coord sc; 这是因为,类模板中定义的表达式参数int exp1和类型(unsigned int) 500U不匹配。 模板、类、对象和函数之间的关系图 10.4应用实例1——【例10.7】对数组插入排序 说明两个函数模板sort和disp,然后分别以整型数组和字符数组为实参进行调用。 [例10.8]通用的栈,可以为整数栈,字符栈 数据成员: 用数组存储栈的元素,栈的数据成员有一个特定类型的数组 栈的上限——数组的大小(长度)T s[max]。 栈顶指针——栈顶元素下标值 int top。 栈实现三个操作 Push Pop stackempty 小结 模板、类、对象和函数之间的关系图 函数模板与模板函数的区别是: 函数模板是模板的定义,用的是通用类型参数。 模板函数是实实在在的函数定义,它由编译系统在遇到具体函数调用时所生成,具有程序代码。 同样,在说明了一个类模板之后,可以创建类模板的实例,即生成模板类。 类模板与模板类的区别是: 类模板是模板的定义,不是一个实实在在的类,定义中用到通用类型参数。而模板类是实际的类,可以用来定义对象。 函数模板vs模板函数 类模板vs模板类 注意: 编译系统根据类模板而生成的具体的类定义。 编译系统再根据具体的类定义生成对象。 st1.pop() 对象调用 template class T T StackT::pop() { T temp;… return temp; }; Stack char st1; 实例化 abs(10); //10为模板函数实参 实例化调用 template class T void S

文档评论(0)

skvdnd51 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档