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

09第九章 类属机制课件.ppt

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

第九章 类属机制 ;§9.1 类属的基本概念 ;§9.1 类属的基本概念 ;§9.1 类属的基本概念 ;§9.1 类属的基本概念 ;§9.1 类属的基本概念 ;9.1.3 类属机制 C++语言的模板 函数模板(类属函数) 函数的形式参数表中某些形式参数的数据类型被参数化 函数模板本身不是函数,经实例化后才得到函数 类模板(类属类) 类的数据成员的类型或成员函数的形参类型被参数化 类属类也不是类,经实例化后才得到具体的类;§9.2 类模板 ;9.2.1 类属类的定义 例1. 用类模板对数组进行排序、检索和求和 #include iostream.h template class T //声明一个形式类属参数T class ARRAY { T *set; // 定义数组元素集合 int n; // 定义数组元素个数 public: ARRAY( T *data, int i) { set= data ; n= i; } ~ARRAY() { } void sort(); // 排序 int seek(T key); // 检索 T sum(); // 求和 };;9.2.1 类属类的定义 template class T // 注意在类外声明类模板的 void ARRAYT::sort() // 成员函数的形式 { int i, j; T d; for (i=1; in; i++)// 冒泡排序 for (j=n-1; j=i; j--) { if (set[j-1] set[j]) {//交换set[j-1]和set[j]的值 d = set[j-1]; set[j-1] = set[j]; set[j] = d ; } } };9.2.1 类属类的定义 template class T int ARRAYT::seek(T key) { for (int i=0; in; i++) if (set[i]==key) return i; // 找到,则返回key在数组中的位置 return -1; // 找不到,返回-1 } template class T T ARRAYT::sum() { T s=0; for (int i=0; in; i++) s+= set[i]; return s; };9.2.1 类属类的定义 例2. 类属链表类 //程序:GLIST.HPP //功能:定义链表类属类LIST的界面 template class ELEMENT_TYPE class LIST { public: LIST(int length) { vector=new ELEMENT_TYPE[length]; size=length; return; } ~LIST() { delete [] vector; return; };9.2.1 类属类的定义 //检索链表中的元素,利用重载运算符[]实现,函数返回值可作为左值 ELEMENT_TYPE operator[](int index) { return vector[index]; } private: ELEMENT_TYPE *vector; int size; };;9.2.1 类属类的定义 例3. 类属堆栈类 //程序:GSTACK.HPP //功能:定义堆栈类属类STACK的类界面和类的实现 #include iostream.h #include process.h #ifndef __GSTACK_HPP #define __GSTACK_HPP template class ELEMENT_TYPE class STACK { public: STACK(); void push(ELEMENT_TYPE obj); void pop(); ELEMENT_TYPE get_top(); int is_empty();;9.2.1 类属类的定义 private: struct NODE { ELEMENT_TYPE element; NODE *link; }; NODE *top; }; template class ELEMENT_TYPE STACKELEMENT_TYPE::STACK() // 构造函数 { top=NULL; // 将栈顶置为空 return; }

文档评论(0)

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

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

1亿VIP精品文档

相关文档