C++程序设计课程介绍-第13章泛型机制—模板.ppt_第1页
C++程序设计课程介绍-第13章泛型机制—模板.ppt_第2页
C++程序设计课程介绍-第13章泛型机制—模板.ppt_第3页
C++程序设计课程介绍-第13章泛型机制—模板.ppt_第4页
C++程序设计课程介绍-第13章泛型机制—模板.ppt_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第13章 泛型机制模板 n类模板的定义 n类模板的实例化 n模板的编译 n非类型形参和参数的默认值 n类模板的友元 n类模板作为基类 类模板的定义 n类模板允许用户为类定义一种模式,使 得类中的某些数据成员、某些成员函数 的参数或返回值能取任意数据类型。 n定义格式: template class array int low; int high; t *storage; public: array(int lh = 0, int rh = 0): low(lh), high(rh) storage = new t high - low + 1; array(const array array t array() delete storage; ; 类模板的成员函数的定义 n类模板的成员函数都是函数模板,模板参数与类模板相同 n形式: template 返回类型 类模板名:成员函数名(函数的形参表) 函数体 narray类的成员函数的格式 template 返回类型 array:函数名(形式参数表) 函数体 array的成员函数的实现 template array /防止自己复制自己 delete storage; / 归还空间 low = a.low; high = a.high; storage = new t high - low + 1; for (int i=0; i array:array(const array high = arr.high; storage = new t high - low + 1; for (int i = 0; i t array array2(10, 20); 模板类的对象的使用 n我们可以用下列语句输入array2的值: for (i=10; i class array t storagehigh - low + 1; public: t ; template t 参数的默认值 n模板参数和普通的函数参数一样,也可 以指定默认值。如果前例中的类模板 array经常被实例化为整型数组,则可在 类模板定义时指定缺省值: template class array ; n当要定义整型数组array时,就可以不指 定模板的实参: arraynext, *q; head-next=null; while (p != null) q=p-next; delete p; p=q; template void linklist:create(const elemtype node *p, *q = head; cout tmp; if (tmp = flag) break; p = new node(tmp); q-next = p; q = p; q-next = null; linklist类模板中的输出运算符重载 函数的实现 template ostream os data; q = q-next; return os; 链表类的使用 n定义: linklist intlist; 该定义产生了类模板的一个整型实例 n如果想创建这个单链表,可以调用create函数 : intlist.create(0); 该调用将输入链表中的元素值,直到输入0为止。 n要输出链表的所有元素,可以直接输出: cout class stack : public linklist public: void push(const elemtype p-next = head-next; head-next = p; bool pop(elemtype if ( p = null) return false; head-next = p-next; data = p-data; delete p; return true; ; 类模板stack的使用 n定义一个整型栈:stack st; n进栈: for (int i = 1; i 10; +i) st.push(i); n出栈: while (st.pop(i) cout i t; n执行结果: 9 8 7 6 5 4 3 2 1 小结 n本章介绍了c+中的泛型程序设计的工具 -模板。 n模板是独立于类型的蓝图

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论