类属和模板.pdf

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

第七章 类属和模板 (C)2007首都师范大学信息工程学院 在设计中我们总会发现对于程序的某些部分,从它 们的逻辑功能看,彼此是相同的,所不同的只是处理 对象 (数据)的类型,例如: int max(int x, int y) { return (x y)? x : y; } float max(float x, float y) { return (x y)? x : y; } double max(double x, double y) { return (x y)? x : y; } 若能将处理对象 (数据)的类型作为参数传递给提 供同一逻辑功能的程序正文,可以大幅度地提高代码 重用度。这就是类属 (参数化模板)编程的思想。 (C)2007首都师范大学信息工程学院 类属编程有两种方式: ⑴传统的采用创建类属数据结构的编程方式; ⑵采用C++ 提供的类属工具— — 参数化模板进行编 程的方式。 本章的重点是本章的重点是模板模板编程编程,,但对但对类属类属的了解将有助于的了解将有助于 对模板的理解。 (C)2007首都师范大学信息工程学院 7.1 类属 7.1.1 为什麽要引入类属编程 为什麽要引入类属编程呢?可以通过一个实例来说 明。若有一个整数链表,可以将它定义成一个类,此 类具有将整数插入链表、在链表中查找指定整数、从 链表中删除指定整数等操作,类定义和使用如下: #include iostream.h struct node { // 链表结点的数据结构 int val; // 结点值 node* next; // 结点链值 }; (C)2007首都师范大学信息工程学院 class intlist // 整数链表类 { node * head; // 链表头指针 int size; // 链表中的结点个数 public: intlist() // 构造函数 {{ headhead == 00;; sizesize == 00;; }} ~intlist(); // 析构函数 bool insert(int); // 向链表中插入一个结点值 bool deletes(int); // 从链表中删除一个结点值 bool contains(int); // 判断链表中是否包含指定结点值 void print(); // 显示输出链表中所有结点值 }; (C)2007首都师范大学信息工程学院 intlist::~intlist() { node* temp; // 定义一个结点型指针用于指向被删结点 for (node* p = head;p;) // 循环删除链表中的所有结点 { temptemp == pp;; //// 另时指针指向当前结点另时指针指向当前结点 p = p-next; // 修改链表中的当前结点指针 delete temp; // 删除当前结点 } } (C)2007首都师范大学信息工程学院 bool intlist::insert(int x) { node* nodes = new node; // 创建一个新结点 if (nodes) // 判别新结点是否创建成功 { nodes-val = x; // 将指定值赋予新结点的值域 nodesnodes--nextnext == headhead;; //// 将链表的头指针赋予新结点链域将链表的头指针赋予新结点链域 head = nodes; // 修改链表头指针使之指向新结点 size++;

文档评论(0)

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

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

1亿VIP精品文档

相关文档