- 1、本文档共103页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 9.3.3 对象 1. 对象的定义 对象的定义可以采用以下的两种方式: (1) 在声明类的同时,直接定义对象,就是在声明类的右花括号“}”后,直接写出属于该类的对象名表。如案例一中的stuA(张三, 18, 0)。stuA是使用全局类定义的全局对象。 (2) 先声明类,在使用时再定义对象。如案例一中stu stuB(李四, 19, 0); stuB是使用全局类定义的局部对象。 对象是类的实例,是类型为类的变量,也有对象数组、对象指针、对象形参、返回对象数据的函数等情况,这里不再一一叙述。 2. 对象的引用 对象的引用是指对对象成员的引用。不论是数据成员还是成员函数,只要是公有的,就可以被外部函数直接引用。引用的格式是: 对象名. 数据成员名 或 对象名. 成员函数名 (实参表) 由于成员函数中隐含了指向当前对象(是指调用成员函数的对象)的指针,成员函数可以直接引用对象的数据成员名。 类在函数外定义的称为全局类,在函数内部定义的称为局部类。同样,对象也有全局对象和局部对象的分类。全局对象只能由全局类来定义。 * 3. 关于this指针 在C++?中,定义了一个this指针,它是成员函数所属对象的指针,它指向类对象的地址,成员函数通过这个指针可以知道自己属于哪一个对象,也就是由哪一个对象来调用的成员函数。this指针是一种隐含指针,它隐含于每个类的成员函数中,仅能在类的成员函数中访问,不需要定义就可以使用。因此,成员函数访问类中数据成员的格式也可以写成: this-成员变量 下面定义一个类Date。 class Date{ private: int year, month, day; public: void setYear(int);void setMonth(int);void setDay(int); }; 该类的成员函数setMonth可用以下两种方法实现: 方法1: void Date::setMonth(int mn) // 使用隐含的 this 指针 { month = mn; } 方法2: void Date: :setMonth(int mn) // 显式使用 this 指针 { this-month = mn; } * 虽然显式使用this指针的情况并不是很多,但是this指针有时必须显式使用。例如,下面的赋值语句是不允许的: void Date::setMonth(int month) { month = month;} //形参month和成员month同名时,默认指的是形参,相当于形参自己给自己赋值 为了给同名的数据成员赋值,可以用this指针来解决: void Date::setMonth(int month) { this-month = month; // this-month是类 Date 的数据成员,month是函数setMonth()的形参 } * 例9.15 this指针示例。 #includeiostream.h class Point { int x, y; public: Point(int a, int b) { x=a; y=b;} void MovePoint( int a, int b){ this-x +=a; this- y+= b;} void print(){ coutx=xy=yendl;} }; void main( ) { Point point1( 10, 10); point1.MovePoint(2, 2); point1.print( ); } * 当一个对象调用成员函数时,该成员函数的this指针便指向这个对象。如果不同的对象调用同一个成员函数,则C++?编译器将根据该成员函数的this指针指向的对象来确定应该引用哪一个对象的数据成员。当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行。当对象point1调用MovePoint(2, 2)函数时,即将point1对象的地址传递给了this指针。MovePoint函数的原型应该是 void MovePoint( Point *this, int a, int b);第一个参数是指向该类对象的一个指针,我们在定义成员函数时没看见是因为这个参数在类中是隐含的。这样point1的地址传递给了this,所以在MovePoint函数中便显式的写成:void MovePoint(int a, int b) { this-x +=a; this- y+=
您可能关注的文档
- 5G接入网及基站配置-OFDM和F-OFDM.pptx
- 5G接入网及基站配置-切片技术.pptx
- 5G接入网及基站配置-上下行解耦.pptx
- 5G接入网及基站配置-同时双工通信技术.pptx
- 5G接入网及基站配置-线缆和站点方案.pptx
- 5G接入网及基站配置-站点勘测.pptx
- 5G接入网及基站配置-站点施工现场工作内容.pptx
- 5G接入网及基站配置-帧结构.pptx
- ABB工业机器人典型工程应用-双流水线程序讲解.pptx
- CC++语言程序设计案例教程:编译预处理.ppt
- 五位一体教案教学教案设计.docx
- 思修与法基-教学教案分享.pptx
- 大学军事之《中国国防》题库分享.docx
- 2023版毛泽东思想和中国特色社会主义理论体系概论第五章-中国特色社会主义理论体系的形成发展.pdf
- 思修与法基 教学全案分享.docx
- 大学军事之《军事思想》题库分享.docx
- 《经济思想史》全套课件-国家级精品课程教案课件讲义分享.pdf
- 厦门大学国际金融全套资料(国家级精品课程)--全套课件.pdf
- 2023版毛泽东思想和中国特色社会主义理论体系概论第五章-中国特色社会主义理论体系的形成发展.docx
- 2023版毛泽东思想和中国特色社会主义理论体系概论第五章中国特色社会主义理论体系的形成发展分享.pdf
最近下载
- 机械设计基础(第七版)杨可桢课后习题答案详解.pdf
- 2025云南省高等职业技术教育招生考试计算机信息类(技能考核)试题(C1).doc VIP
- NBT 32045-2018 国家行业标准.pdf
- 小学生《书法》课三年级下册全册教学设计教案.pdf VIP
- 2025云南省高等职业技术教育招生考试计算机信息类(技能考核)试题(C5).doc VIP
- 2025年长沙电力职业技术学院单招职业倾向性测试题库(夺冠系列).docx VIP
- 2025年湖南环境生物职业技术学院单招职业适应性测试题库必威体育精装版.docx VIP
- 多轮问答数据生成方法、装置、设备与存储介质.pdf VIP
- PPAP手册第四版.doc VIP
- 2025年长沙电力职业技术学院单招职业适应性测试题库完整版.docx VIP
文档评论(0)