第4章 类和对象(二).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文档。上传文档
查看更多
第二部分 面向对象的程序设计 第3章 类和对象(一) 第4章 类和对象(二) 第5章 继承和派生 第6章 虚函数与多态性 第7章 运算符重载 第8章 模板 第9章 标准模板库STL 第10章 C++语言的输入和输出 第4章 类和对象(二) 本章要点: 对象数组与对象指针。 类的静态成员:静态数据成员与静态成员函数。 友元有3种形式:友元函数、友元成员和友元类。 常对象:常数据成员与常成员函数。 4.1 自引用指针this 对象的自身引用是面向对象程序设计语言中特有的、十分重要的一种机制。在C++中,为这种机制设立了专门的表示:this指针变量。 在类的每一个成员函数的形参表中都有一个隐含的指针变量this,该指针变量的类型就是成员函数所属类的类型。 当程序中调用类的成员函数时,this指针变量被自动初始化为发出函数调用的对象的地址。 【例4.1】this指针的使用。 /* 04_01.cpp */ #include iostream using namespace std; class Sample { int x, y; public: Sample(int a=0, int b=0) { x=a; y=b; } void print() { coutxendl; coutyendl; } }; int main() { Sample obj(5,10); obj.print(); return 0; } 上述程序可用this指针显示改写为完全等价的形式: #include iostream using namespace std; class Sample { int x, y; public: Sample(int a=0, int b=0) { this-x=a; //在此例中this=obj this-y=b; } void print() { coutthis-xendl; //在此例中this=obj coutthis-yendl; } }; int main() { Sample obj(5,10); obj.print(); return 0; } 那么何时使用this指针呢? 编写代码时主要有两种场合要求尽可能使用this指针,一种是为了区分成员和非成员。 例如: void Sample::fun(int x) { this-x=x; } 另一种使用this指针的应用是一个类的方法需要返回当前对象的引用。例如: class Sample { private: int x; char* ptr; public: Sample Set(int i, char *p); //.. }; Sample Sample::Set(int i, char *p); { x=i; ptr=p; return *this; } 方法Set返回当前对象的引用,*this就是当前对象。 4.2 对象数组与对象指针 4.2.1对象数组 所谓对象数组是指每一数组元素都是对象的数组,也就是说,若一个类有若干个对象,我们把这一系列的对象用一个数组来存放。 对象数组的元素是对象,不仅具有数据成员,而且还有函数成员。定义对象数组时,系统为每个数组元素对象调用一次构造函数以构造这些元素。 对象数组的定义的格式为: 类名 数组名 [数组大小]; 例如: Student stu[3]; 定义了类Student 的对象数组stu。 系统调用无参构造函数3次。 如果类Student有2个数据成员姓名(char name[10])、年龄(int age),那么在定义对象数组时也可以实现初始化。 例如: Student stu[3]={ Student(“zhao”,22), Student(“qian”,20), Student(“sun”,8,90) }; 在建立对象数组时,分别调用构造函数,对每个元素初始化。 与基本数据类型的数组一样,在使用对象数组时也只能访问单个数组元素,也就是一个对象,通过这个对象,也可以访问到它的公有成员,一般形式是: 数组名[下标]. 成员名 【例4.2】对象数组的应用。 /* 04_02.cpp */ #include iostream using namespace std; class Sample { private: int x; public: void Set_x(int n) { x=n; } int Get_x() { return x; } }; 0 1 2 3 4.3.2 堆对象 使用new运算符动态分配

文档评论(0)

中华书局 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档