数据共享和成员特性(部分)

数据共享和成员特性(部分)

ID:42066472

大小:431.51 KB

页数:22页

时间:2019-09-07

数据共享和成员特性(部分)_第1页
数据共享和成员特性(部分)_第2页
数据共享和成员特性(部分)_第3页
数据共享和成员特性(部分)_第4页
数据共享和成员特性(部分)_第5页
资源描述:

《数据共享和成员特性(部分)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C++面向对象程序设计 第六章数据共享和成员特性陈春丽CCL@cugb.edu.cn第六章数据共享和成员特性6.1this指针6.2类的友元6.3类的静态成员6.4const成员6.1this指针隐含于每一个类的成员函数中的特殊指针识别成员函数当前操作的对象类的每个非静态成员函数都含有一个指向当前对象的指针,即this指针类的非静态成员函数中访问数据成员时,隐含形式是“this->数据成员名”this指针的使用classPoint{public:Point(intx=0,inty=0){xPos=x;y

2、Pos=y;}voidadd(Pointtwo){xPos+=two.xPos;yPos+=two.yPos;}voidprint(){cout<xPos//yPos等价于this->yPosvoidmain(){CPointpt(1,2),pt2(3,4);pt.add(pt2);pt.print();}pt.add(pt2);add(&pt,pt2);voidadd(Point*this,

3、Pointtwo)this->xPos+=two.xPos;6.2类的友元友元是C++提供的一种破坏数据封装和数据隐藏的机制外界只能访问类的public成员,通过friend修饰符,将一个模块声明为另一个模块的友元,则该友元能够引用到另一个模块中隐藏的信息可以使用友元函数和友元类为了确保数据的完整性,及数据封装与隐藏的原则,建议尽量不使用或少使用友元友元函数友元函数是在类声明中说明的非成员函数,由关键字friend修饰,该友元函数体中能够通过对象名访问private和protected成员作用:增加灵活

4、性,使程序员可以在封装和快速性方面做合理选择访问对象中的成员必须通过对象名例:计算两点距离(不用友元函数)#include#includeusingnamespacestd;classPoint{public:Point(intx=0,inty=0){xPos=x;yPos=y;}intgetX(){returnxPos;}intgetY(){returnyPos;}private:intxPos,yPos;};doubleDistance(Point&a,Point&

5、b){doubledx=a.getX()-b.getX();doubledy=a.getY()-b.getY();returnsqrt(dx*dx+dy*dy);}intmain(){Pointp1(3.0,5.0),p2(4.0,6.0);doubled=Distance(p1,p2);cout<<"Thedistanceis"<

6、te:intxPos,yPos;};doubleDistance(Point&a,Point&b){doubledx=a.xPos-b.xPos;doubledy=a.yPos-b.yPos;returnsqrt(dx*dx+dy*dy);}intmain(){……}友元类若一个类为另一个类的友元,则此类的所有成员都能访问对方类的私有成员声明语法:将友元类名在另一个类中使用friend修饰说明友元关系是单向的若声明B类是A类的友元,B类的成员函数就可以访问A类的私有和保护数据,但A类的成员函数却不能访问

7、B类的私有、保护数据classA{friendclassB;public:voidDisplay(){cout<

8、初始化,用(::)来指明所属的类。例:具有静态数据成员的Point类classPoint{public:Point(intx=0,inty=0){xPos=x;yPos=y;countP++;}……voidgetC(){cout<<"Objectid="<

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

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

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