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

CC++语言程序设计案例教程: 类与对象.pptVIP

CC++语言程序设计案例教程: 类与对象.ppt

  1. 1、本文档共103页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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+=

文档评论(0)

ning2021 + 关注
实名认证
文档贡献者

中医资格证持证人

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

领域认证该用户于2023年05月10日上传了中医资格证

1亿VIP精品文档

相关文档