C程序设计基础ppt课件第89讲 类和对象(二).ppt

C程序设计基础ppt课件第89讲 类和对象(二).ppt

ID:58886633

大小:468.50 KB

页数:63页

时间:2020-09-30

C程序设计基础ppt课件第89讲 类和对象(二).ppt_第1页
C程序设计基础ppt课件第89讲 类和对象(二).ppt_第2页
C程序设计基础ppt课件第89讲 类和对象(二).ppt_第3页
C程序设计基础ppt课件第89讲 类和对象(二).ppt_第4页
C程序设计基础ppt课件第89讲 类和对象(二).ppt_第5页
资源描述:

《C程序设计基础ppt课件第89讲 类和对象(二).ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C++程序设计基础主讲人:曹岳辉2011年春季学期第8-9讲类和对象(二)对象指针和对象引用数组常类型子对象和堆对象类型转换主要内容§1对象指针和对象引用指向类的成员的指针对象指针和对象引用作函数参数this指针指向数据成员的指针格式为:<类型说明符><类名>::*<指针名>指向成员函数的指针格式为:<类型说明符>(<类名>::*<指针名>)(<参数表>)例如:classA{public:intfun(intb){returna*c+b;}A(intI){a=I;}intc;private:inta;};i

2、ntA::*pc=&A::c;//定义一个指向类A的c的指针pcint(A::*pfun)(int)=A::fun;//定义一个指向类A的成员函数fun的指针pfun指向类的成员的指针intA::*pa=&A::a;//error类A中的a是私有成员,指针pa是无权访问的。定义好指向类成员的指针后,在使用之前,同样需要先确定对象,再通过指针来指向对象中的成员。如:Aa;a.*pc=8;cout<<(a.*pfun)(5);A*p=&a;//定义一个指向对象的指针p->*pc=8;cout<<(p->*pfu

3、n)(5);对象指针和对象引用作函数参数其优点有:一、作为传址调用,实现函数间信息传递二、提高运行效率,减少时空开销。显然,对象指针为形参时,对应实参应为对象的地址值。例如:#includeclassM{public:M(){x=y=0;}M(inti,intj){x=i;y=j;}1、对象指针作函数参数voidcopy(M*m);voidsetxy(inti,intj){x=i;y=j;}voidprint(){cout<

4、,y;};voidM::copy(M*m)//成员函数定义{x=m->x;y=m->y;}voidfun(Mm1,M*m2);//一般函数说明voidmain(){Mp(5,7),q;//定义对象q.copy(&p);fun(p,&q);p.print();q.print();}以p对象的地址为实参形参为对象指针以q对象的地址值为实参对象指针和对象引用作函数参数voidfun(Mm1,M*m2)//一般函数定义{m1.setxy(12,15);m2->setxy(22,25);}第一个形参为对象第二个形参为

5、对象指针实参——形参形参pqm1m2实参5700572008200822251215572225过程调用后过程调用中5720082008575757对象指针和对象引用作函数参数显然,对象引用为形参时,对应实参应为对象名。例如:#includeclassM{public:M(){x=y=0;}M(intI,intj){x=I;y=j;}voidcopy(M&m);voidsetxy(inti,intj){x=I;j=j;}voidprint(){cout<

6、l;}private:intx,y;};2、对象引用作函数参数形参为对象引用对象指针和对象引用作函数参数voidM::copy(M&m)//成员函数定义{x=m.x;y=m.y;}voidfun(Mm1,M&m2);//一般函数说明voidmain(){Mp(5,7),q;//定义对象q.copy(p);fun(p,q);p.print();q.print();}voidfun(Mm1,M&m2)//一般函数定义{m1.setxy(12,15);m2.setxy(22,25);}以p对象名为实参以q对象名为

7、实参第二个形参为对象引用对象指针和对象引用作函数参数实参——形参形参pqm1m2实参57005722251215572225过程调用后过程调用中57575757对象指针和对象引用作函数参数This是一个隐含于每一个类的非静态成员函数中的特殊指针。用于指向正在操作该成员函数的对象。例如:#includeclassA{public:A(){a=b=0;}A(intI,intj){a=I;b=j;}voidcopy(A&aa);voidprint(){cout<

8、dl;}private:inta,b;};相当于:voidcopy(A*this,A&aa);This指针voidA::copy(A&aa)//成员函数定义{if(this==&aa)return;*this=aa;}voidmain(){Aa1,a2(3,4);a1.copy(a2);//调用成员函数a1.print();}注意:此时,操作copy成员函数的对象为a1,因此,this指针指向a1。当某个对象调用

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。