类与对象4.2.pptVIP

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

第4章 类与对象 注意:类是一种数据类型,定义时系统并不为类分配存储空间,所以不能对类的数据成员初始化。当然类中的任何数据成员也不能使用关键字extern、auto或register限定其存储类型。 4.2.3 成员函数的定义 内联成员函数举例(一) class Point { public: void Init(int initX,int initY) { X=initX; Y=initY; } int GetX() {return X;} int GetY() {return Y;} private: int X,Y; }; 内联成员函数举例(二) class Point { public: void Init(int initX,int initY); int GetX(); int GetY(); private: int X,Y; }; inline void Point:: Init(int initX,int initY) { X=initX; Y=initY; } inline int Point::GetX() { return X; } inline int Point::GetY() { return Y; } 4.2.4 对象的创建与使用 创建类的对象可以有两种常用方法。 第一种是直接定义类的实例——对象: CGoods Car; Clock myClock; 第二种是采用动态创建类的对象的方法,将在第七章中学习,当然变量也同样可动态创建。所谓动态指在程序运行时建立对象。而前一种是在编译时(程序运行前)建立。 如果通过使用关键字inline,则系统也会自动采用内联扩展方法实现,这时每个对象都有该函数一份独立的拷贝。 例如,RegisterGoods()函数可定义为: inline void CGoods::RegisterGoods(char* name , int amount , float price) { strcpy(Name,name) ; Amount=amount ; Price=price ; } 则每个对象都有RegisterGoods()函数一份独立的拷贝。 void main( ) { CGoods car ; //定义了具体汽车car char str [21] ; int num ; float pr ; 4.2.5 引用 但如果要求改变函数实参的值,怎么办呢? 再者,如果参数是一些简单的数据类型,占据内存不多,重新分配内存问题不大;如果实参是一个复杂的对象,重新分配内存会引起程序执行效率大大下降,怎么办呢? 4.3 构造函数和析构函数 4.3.1 构造函数的定义与使用 3.在程序运行时,当新的对象被建立,该对象所属的类的构造函数自动被调用,在该对象生存期中也只调用这一次。 4.构造函数可以重载。严格地讲,说明中可以有多个构造函数,它们由不同的参数表区分,系统在自动调用时按一般函数重载的规则选一个执行。 5.构造函数可以在类中定义,也可以在类外定义。 6. 如果类说明中没有给出构造函数,则C++编译器自动给出一个缺省的构造函数: 类名(void) { }; 关于缺省构造函数: 关于创建对象的几种写法: 1、CGoods Car2(“桑塔那2000”,164000.0) ;//调用两参数构造函数 CGoods Car3= CGoods(“夏利2000”,30,98000.0); 2、如果对象的数据成员全为公有的,也可以在对象名后加“=”加“{}”,在花括号中顺序填入全体数据成员的初始值.例如: CGoods Car={“虚拟”,2,100000,20000}; 3、用同类的一个对象去初始化另一个对象: CGoods Car6=Car5,Car7(Car5);//拷贝构造 4.3.2 拷贝构造函数 说明 3、 通常情况下,按成员语义支持已经足够。但在某些情况下,它对类与对象的安全性和处理的正确性还不够,这时就要求类的设计者提供专门的拷贝构造函数(Copy Constructor)和拷贝赋值操作符(Copy Assignment Operator)的定义。 4、拷贝构造函数的参数为同一类(class)的其他对象的引用,在函数体内使用参数对象的私有数据成员时,可用对象名加成员访问操作符点号直接进行。 4.3.3 析构函数的定义 类的应用举例(例4-

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档