




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2020/7/24,1,第 六 章 对象数组和指向对象的指针,6.1 对象数组,对象数组是指每一元素都是对象的数组 一、对象数组的说明和使用与其它变量相同 1. 说明:类名 数组名下标表达式; 例:Clock myclock5; 2. 引用:数组名下标.成员名 例: myclock2.out();,二、要按如下通常的形式创建对象数组, Clock myclock5; 则对该类(如Clock类)的构造函数的要求满足如下条件之一: 1. 没有构造函数; 2. 有构造函数,但要有一个构造函数不带参数; 3. 有构造函数,但要有一个构造函数具有参数全是缺省参数,例6_1 #include class
2、point private: int x1,x2; public: /point(int x=1,int y=1) / x1=x;x2=y; point(int x,int y) x1=x;x2=y; point() x1=0;x2=0; int getX() return x1; int getY() return x2; ; void main() point data(3,4); coutdata.getY()endl; point more_data20; coutmore_data2.getX()endl; ,6.2 对象指针,一、指向对象的指针 指向对象指针的说明和使用与其它类型的
3、指针变量的方法相同 1、定义:类名 *对象指针名 2、引用:对象指针名-成员名 3、用指针引用单个对象成员(前面已接触过) 4、用指针引用对象数组,例6_2 (与例6_1 功能完全相同) #include class point private: int x1,x2; public: /point(int x=1,int y=1) / x1=x;x2=y; point(int x,int y) x1=x;x2=y; point() x1=0;x2=0; int getX() return x1; int getY() return x2; ; void main() point data(3,
4、4),*p,*q; p= ,二、this指针 三、指向类的非静态成员的指针 1、定义: 类型说明符 类名: *指针名 (指向公有数据成员的指针) 类型说明符 (类名: *指针名)(参数表) (指向公有成员函数的指针) 2、赋值:(确定指向类的哪个成员) 指针名= public: /point(int x=1,int y=1) / x1=x;x2=y; point(int x,int y) x1=x;x2=y; ,point() x1=0;x2=0; int getX() return x1; int getY() return x2; ; void main() point data(3,4)
5、,*p,*q; int point:*r; int (point:*qq)(); r= ,指向类的静态成员的指针,对类的静态成员的访问不依赖于对象 可以用普通的指针来指向和访问静态成员 例6-14 通过指针访问类的静态数据成员 例6-15 通过指针访问类的静态函数成员,指 针,例6-14通过指针访问类的静态数据成员,#include using namespace std; class Point/Point类声明 public:/外部接口 Point(int xx=0, int yy=0) X=xx;Y=yy;countP+;/构造函数 Point(Point /静态数据成员定义性说明,指
6、针,int main()/主函数 /声明一个int型指针,指向类的静态成员 int *count= ,13,例6-15通过指针访问类的静态函数成员,#include using namespace std; class Point/Point类声明 public:/外部接口 /其他函数略 static void GetC() /静态函数成员 cout Object id=countPendl; private:/私有数据成员 int X,Y; static int countP;/静态数据成员引用性说明 ; / 函数实现略 int Point:countP=0;/静态数据成员定义性说明,指 针
7、,int main()/主函数 /指向函数的指针,指向类的静态成员函数 void (*gc)()=Point:GetC;/右则只写函数名,左则括号内要写参数情况(如果有的话) Point A(4,5);/声明对象A coutPoint A,A.GetX(),A.GetY(); gc();/输出对象序号,通过指针访问静态函数成员 Point B(A);/声明对象B coutPoint B,B.GetX(),B.GetY(); gc();/输出对象序号,通过指针访问静态函数成员 ,15,动态申请内存操作符 new,new 类型名T(初值列表) 功能:在程序执行期间,申请用于存放T类型对象的内存空间
8、,并依初值列表赋以初值。 结果值:成功:T类型的指针,指向新分配的内存。失败:0(NULL),动态存储分配,释放内存操作符delete,delete 指针P 功能:释放指针P所指向的内存。P必须是new操作的返回值。,动态存储分配,例6-16 动态创建对象举例,#include using namespace std; class Point public: Point() X=Y=0; coutDefault Constructor called.n; Point(int xx,int yy) X=xx;Y=yy; cout Constructor called.n; Point() cou
9、tDestructor called.n; int GetX()return X; int GetY()return Y; void Move(int x,int y) X=x; Y=y; private: int X,Y; ;,动态存储分配,int main() coutStep One:endl; Point *Ptr1=new Point; delete Ptr1; coutStep Two:endl; Ptr1=new Point(1,2); delete Ptr1; return 0; ,运行结果: Step One: Default Constructor called. Destructor called. Step Two: Constructor called. Destructor called.,19,本章总结: 1、对象数组 2、对象指针 3、用new 创建堆对象,用delete释放,指向对象的指针,定义:类名 *对象指针名 指向类的非静态成员的指针, 定义: 类型说明符 类名: *指针名 (指向公有数据成员的指针) 类型说明符 (类名: *指针名)(参数表) (指向公有成员函数的指针) 指向类的静态成员的指针,用普通的指针来指向和访问,上机题: 1、 声明一个 Employee 类,其中包括姓名、街道地址、城市和邮编等属性,以及c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产业资金补助管理办法
- 信用引用授权管理办法
- 办理图书借阅管理办法
- 制定呆账核销管理办法
- 公司修缮工程管理办法
- 化纤废料库存管理办法
- 北京引进毕业管理办法
- 公司经营团队管理办法
- 关于保障基金管理办法
- 军人残疾赔偿管理办法
- 社区工作者考试(选择题200题)带答案
- 2025年高校教师资格证之高等教育心理学通关题库附带答案
- 广东省2025年化学高一下期末教学质量检测模拟试题含解析
- 2025至2030全球及中国隔膜式氢气压缩机行业项目调研及市场前景预测评估报告
- 社区上半年安全生产工作总结
- 2025至2030中国精神病医院行业发展分析及发展趋势分析与未来投资战略咨询研究报告
- 2025年河南省中考英语试卷及答案
- 2025年中国二手球鞋行业市场全景分析及前景机遇研判报告
- 2025年天津市中考语文试卷(含标准答案)
- 产品售后成本管理制度
- 对海外公司法务管理制度
评论
0/150
提交评论