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

第5章 类与动态内存.ppt

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

第5章 类与动态内存 第5章 类与动态内存 5.1 指针作为类的成员变量 类的成员可以是指针,当类的成员中含有指针变量时,为了保证每一个对象都有一个单独的拷贝,就必须重载构造函数。 5.2 对象指针 类的指针变量是一个用于保存该类对象在内存中存储空间首地址的指针型变量,同普通数据类型的指针变量有相同的性质。 声明一个类的指针变量的语法如下: 类名*指针变量名; 取得一个对象在内存中首地址的方法同取得变量在内存中首地址的方法一样,都是通过取地址运算符“”。例如,若有 CStudent* pStu,Stu1; 则 pStu=Stu1; 表示表达式Stu1是取得对象Stu1内存中的首地址,其值的类型是CStudent*,同类指针pStu就指向对象Stu1在内存中的首地址。 例如,若有 Cstudent Stu1; Cstudent* pStu=Stu1; 则 *pStu.SetID; //其中SetID是类CStudent的数据成员 pStu-SetDispl(name);//其中SetDispl是类CStudent的成员函数都是合法的表达式。 this指针是每个对象中隐藏的指针。this指针是默认的。当一个对象生成后,这个对象的this指针就指向内存中保存该对象数据的存储空间的首地址。 在类的成员函数中使用这个this指针,就好像this指针是类的一个自动隐藏的私有成员一样。this指针可以形象地用如下定义来说明: 5.3 this指针 class MyClass { [private:] [MyClass* this;] ... public: MyClass(); ... }; 实际上不必像上面那样定义this指针。this指针对一个对象来说是系统自动生成的,主要用于在成员函数中需要把对象本身作为参数传递给另一个函数。我们通过以下例子来说明this指针的作用。 5.4 动态对象 动态内存分配是相对于静态内存分配而言的。静态内存分配是指在编译阶段就分配好存储单元空间,这些空间的大小在程序运行过程中是不可更改的,如变量、数组等. 静态内存分配和动态内存分配在使用中的区别在于:通过静态内存分配取得的空间(即变量、数组等所占用的空间)程序员无须管理,编译器在对程序进行编译时已经自动将管理这些空间的代码加入到目标程序中,在作用域结束后,自动将空间归还给系统;而通过动态内存分配所取得的空间在使用完毕后,必须由程序员通过程序语句显式地将其归还给系统。 动态对象 同样,使用new可以动态的创建对象,使用new创建对象将隐含的调用类的构造函数,使用new创建的对象不再使用时要用delet删除,以回收内存,使用delete删除对象时将隐含的调用析构函数。 5.链表概述 链表是一种动态数据结构,它的特点是用一组任意的存储单元(可以是连续的,也可以是不连续的)存放数据元素。一个简单的链表具有如图5-7所示的结构形式。 图5-7 简单链表的结构形式 链表中每一个元素称为“结点”,每一个结点都是由数据域和指针域组成的,每个结点中的指针域指向下一个结点。图5-7中,head是“头指针”,表示链表的开始,用来指向第一个结点,而最后一个结点的指针域应为NULL(空地址,图5-7中是用“∧”表示的),表示链表的结束。 可以看出,链表结构必须利用指针变量才能实现,即一个结点中应包含一个指针变量,用来存放下一个结点的地址。 在C++中,实现一个单链表结构比较简单。例如,可定义单链表结构的最简单形式如下: struct NODE { int data; NODE* next; }; 这里用到了前面第3章的结构体类型。其中,*next是指针域,用来指向该结点的下一个结点;data是一个整型变量,用来存放结点中的数据。当然,data可以是任何数据类型,包括结构体类型或类类型。 在此基础上,我们再定义一个链表类List,其中包含链

文档评论(0)

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

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

1亿VIP精品文档

相关文档