- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5.3 对象的创建.ppt
§5.3对象的创建 1.实体、类、对象、实例 实体:客观世界与思维世界中存在的事物。 类:具有相同的构成形式的所有实体的构成形式的描述。 (它只描述它们包含有哪些数据,提供些什么操作,但仍未具体分配存储空间,也尚未实际存在) 对象:类的实例,具有类定义那样构成形式的客观存在的实体 。(简称:类类型的变量) 具有类类型的变量称为对象。(object) 实例:在程序运行时,通过为对象分配存储空间来创建对象。创建对象时,类被用作样板,对象为类的实例。(instance) 2.对象创建的例子 [例1]设已定义了循环计数器类: class CIRCULAR_NUMBERS{ public: ?? void set_mode(int min,int max);? //设置循环计数器的上、下限 ?? void set_value(int value);???????????? //设置循环计数器的当前值 ?? int get_value();?????????????????????? //查询循环计数器的当前值 ?? void increment();????????????????????? //循环计数器加1 ?? void decrement();????????????????????? //循环计数器减1 private: ?? int min_val;?????????? //最小值 ?? int max_val;?????????? //最大值 ?? int current;????????? //当前值 }; 定义了类之后,我们就可以用它来创建相关的对象: //创建角度循环计数器angle CIRCULAR_NUMBERS angle; //创建月份循环计数器month CIRCULAR_NUMBERS month; [例2]创建时钟类对象的例子 设已定义了时钟类: //功能:实现一个简单的时钟类 class CLOCK{ public: CLOCK (int hh, int mm, int ss); //设置时间的当前值 void update( ); //刷新时间 void show( ); //显示时间 private: CIRCULAR_NUMBERS hour; //时 CIRCULAR_NUMBERS minute; //分 CIRCULAR_NUMBERS second; //秒 }; 我们就可以利用它来创建时钟对象(并初始化): CLOCK rolex(4, 15, 30); CLOCK cima(14, 0, 0); 3.同一类不同对象的存储组织 1)类定义中的静态成员各自分配存储空间; 2)类定义中的非静态成员: ?? 数据成员--各自分配存储空间。 ?? 成员函数--共享同一代码副本,共享存储空间。 原因:数据成员:描述对象的状态,不同对象可能具有不同的状态 。(如人的身高,不同人身高可能就不一样) 成员函数:作为类对外界提供服务的界面,是对象行为的描述,同一类的对象的行为应该是一致的。 3)要解决的问题(针对函数成员共享存储空间) ①不同对象调用一个成员函数:不同对象分配存储空间时在本来分配成员函数的位置上安排一个转向指针,使它指向对应的成员函数。 ②不同对象调用同一成员函数,如何保证成员函数不会错误地访问另一对象? C++通过为成员函数设置this指针来解决。 ③this指针 C++编译对类的成员函数进行编译时,自动为每一个成员函数设置一个this指针。 该指针的功能是:当一个对象调用一个成员函数时,这个成员函数的this指针就指向调用这一个成员函数的对象。 如下页图所示,当对象 month调用成员函数set_mode( )时,成员函数set_mode( )的this指针就指向对象month。 4)例子: 4.对象成员的引用 基本上采用2种方式(必须表明:是哪一个对象,是该对象中的哪个成员) : 1)对象名.成员名 ? ??? 如:angle.increment( ); 2)指向对象的指针-成员名 ??? 如前例:已知class Myclass 创建了对象和指向对象的指针:Myclass obj1,obj2,*p;?? //p是指向类Myclass的指针 ??? 令p指向obj1:p=obj1; 则:obj1.x与p-x等价;obj1.getx( )与p-getx( )等价? //因p指向obj1 5.对象的生存期 对象的生存期概念与变量生存期概念一样,由对象声明决定。其中各个数据成员的生存期由对象
原创力文档


文档评论(0)