- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c第8章类和对象的应用
2008-2009-2 C++程序设计 第8章 类和对象的应用 主讲:迟立颖 本章内容提要 类和指针 类和数组 常类型 子对象和堆对象 8.1 类和指针 指向类的成员的指针 对象指针和对象引用作为函数的参数 this 指针 1.指向类对象的指针 指向类对象的指针变量一般格式为: 类名 *对象指针名 2.指向类的成员的指针 在C++中,类的成员有数据成员和成员函数。 所以,可以定义: 指向类的数据成员的指针 指向类成员函数的指针。 (1)指向数据成员的指针 定义格式: 类型类名::*指针名[=初值]; 赋值方法: 指针名=类名::数据成员名; 使用方法 使用类的对象引用时: 对象名.*指针名 使用对象指针引用时: 对象指针名-*指针名 (2)指向成员函数的指针 定义格式: 类型(类名::*指针名)(参数表); 赋值方法: 指针名=类名::函数名; 使用方法 使用类的对象引用时 (对象名·*指针名)(参数表); 使用类的对象指针引用时 (对象指针名-*指针名)(参数表); 例8.1 问题:对象指针、指向数据成员的指针、指向成员函数的指针实例。 例8.1 问题:对象指针、指向数据成员的指针、指向成员函数的指针实例。 3.this指针 this指针是一种系统自动创建的指向当前对象的指针。当对一个对象调用成员函数时,编译程序先将对象的地址赋给this指针,然后调用成员函数,每次成员函数存取数据成员时,则隐含使用this指针。 this指针通常被隐含使用,有时也被显式使用。*this标识调用该成员函数的对象。 例8.2 问题: this指针的使用。 A类创建a1,a2实例的具体过程 类实例化创建对象时,系统仅为类中的数据成员分配空间,而成员函数则共用,这时系统自动创建this指针,指向调用的对象。 二、类和数组 类和数组的关系 对象数组 对象指针数组 指向对象数组的指针 1. 对象数组 对象数组是指数组元素为对象的数组。数组中若干个元素必须是同一个类的若干个对象。 定义与初始化:类名 数组名 [大小] … 例如:DATE dates[1]={DATE(7,22,1988)}; 赋值:可以被初始化,也可以被赋值。 dates[0]=DATE(7,22,1988); 注意:必须是同一类对象,创建一个临时的对象,赋值后撤销。 对象数组的引用与普通数组一样。 对象数组元素的下标也是从0开始。 使用时可以使用下标法和指针法。 例8.3 问题:对象数组的应用实例。 例8.3 问题:对象数组的应用实例。 2.对象指针数组 对象指针数组 数组中的元素为对象指针类型的数组。 定义格式: 类名*数组名[大小]… 例如: char *pa[3];//定义一维指针数组。 A *b[3];//b是一维指针数组名,该数组有3个元素,每个元素是一个类A的指针 例8.4 问题:对象指针数组的应用。 例8.4 问题:对象指针数组的应用。 3.指向对象数组的指针 指向对象数组的指针,即数组指针 定义格式: 类型(*指针名)[(大小)]…; 类名(*指针名)[(大小)]…; 例如: int (*p)[3]; A (*PL)[4]; 注意:PL是一个指向一维对象数组的指针,该数组中有4个元素,每个元素是A的对象。 例8.5 问题:指向对象数组的指针实例。 例8.5 问题:指向对象数组的指针实例。 三、常类型 常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。 定义或说明常类型量时必须进行初始化。 1.常对象 常对象是指对象常量,定义格式: 类名 const 对象名; 或者const 类名 对象名; 注意:定义常对象时,同样要进行初始化,并且该对象不能再被更新。 2.常数据成员 使用const关键字进行说明的数据成员,称为常数据成员。 注意: 在类中说明了const数据成员时,只能通过构造函数成员初始化列表的方式来对数据成员初始化。 A::A(int i):a(i),r(a){ } 冒号后边是一个数据成员初始化列表。 数据成员a和r都是常类型,需要采用初始化格式。 2.常成员函数 使用const关键字进行说明的成员函数,称为常成员函数。 只有常成员函数才能操作常量对象。即,常成员函数的this指针指向的对象是常对象。 常成员函数说明格式: 类型函数名(参数表) const {函数体} 例8.6 问题:常对象、常成员函数和常数据成员的应用实例。 例8.6 问题:常对象、常成员函数和常数据成员的应用实例。 四、子对象和堆对象 当一个类的成员是某一个类的对象时,该对象就为子对象。 堆对象是指在程序运行过程中根据需要随时可以建立或删除的对象。 1.子对象 当一个类的成员是某一个类的对象时,该对象就为子
文档评论(0)