版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 白酒蒸馏串香工安全宣传模拟考核试卷含答案
- 固体树脂版印刷员创新意识评优考核试卷含答案
- 玻璃制品机械成型工风险评估与管理水平考核试卷含答案
- 塑料着色工创新意识评优考核试卷含答案
- 压缩天然气场站运行工岗前管理综合考核试卷含答案
- 环境科学与可持续发展行动计划
- 市场营销策划方案评估与优化手册
- 物流运输计划与配送管理模板
- 电商运营主管流量转化提升策略方案
- 项目验收前收官阶段责任承诺书(7篇)
- 【地理】“鱼米之乡”长江三角洲地区课件-2025-2026学年八年级地理下册人教版
- 2026内蒙古锡林郭勒盟阿巴嘎旗林草执法人员补充招收6人备考题库附答案详解(综合题)
- 2026年中山兴中集团有限公司校园招聘笔试参考题库及答案解析
- 2026贵州六盘水市融资担保有限责任公司招聘4人笔试历年常考点试题专练附带答案详解
- 2025重庆机场集团有限公司社会招聘150人(第二次)笔试历年备考题库附带答案详解
- 2026年广东中山市高三一模高考地理试卷试题(含答案详解)
- 人工智能伦理教案
- GB/T 47165-2026木质素硫酸盐木质素、碱木质素和水解木质素中木质素含量的测定
- 2026年长春职业技术学院单招综合素质考试题库含答案解析
- 打桩工三级安全教育试题及答案
- 《急诊科建设与管理指南(2025版)》
评论
0/150
提交评论