类和对象课件.pptVIP

类和对象课件.ppt

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  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文档。上传文档
查看更多

6.6友元成員的存取訪問許可權的控制提供了一個嚴格的介面,使得外界無法直接去“窺視”類的內部,是面向對象程式設計中實現數據封裝和資訊隱藏的重要手段,也是面向對象程式設計的基礎。類的友元或朋友(friend)能夠完成這一使命,它以犧牲類的封裝性為代價,打開一個“缺口”,允許外界直接訪問其“隱私”。友元包括兩類:友元函數友元類6.6.1友元函數所謂友元函數,是說它不是類的一個成員函數,卻可以直接訪問類的private成員。友元函數可以是一個普通的全局函數,也可以是其他類的成員函數。doublefn(clsNameobj){…}doubleclsTwo::ffn(clsNameobj){…}classclsName{public:… frienddoublefn(clsNameobj);private: … frienddoubleclsTwo::ffn(clsNameobj);};6.6.1友元函數友元函數具有如下特點:可以在類體內任何位置聲明友元函數,只要在函數類型前加上修飾符friend即可;友元函數不是類的成員函數,但可以直接訪問該類的private成員;友元函數一般在當前類體外定義。6.6.1友元函數【例6.16】友元函數示例。#includeiostream#includecmathusingnamespacestd;classPoint{public: Point(doublei,doublej) {x=i;y=j;} voidGetxy() {cout(x,y)endl;} frienddoubleDistance(Pointa,Pointb);private: doublex,y;};6.6.1友元函數doubleDistance(Pointa,Pointb){ doubledx=a.x-b.x;doubledy=a.y-b.y;returnsqrt(dx*dx+dy*dy);}intmain(){ Pointp1(6.0,8.0),p2(12,16); cout====================endl; p1.Getxy(); p2.Getxy(); cout====================endl; doubled=Distance(p1,p2); coutDistanceisdendl; cout====================endl; return0;}6.6.2友元類如果一個類(clsOne)聲明為另一個類(clsTwo)的友元類,是指clsOne類的所有成員函數都是clsTwo類的友元函數。這樣,避免當clsOne類有多個成員函數時,分別來說明友元函數,使clsTwo類的聲明更簡潔。6.6.2友元類classclsOne{public: …private: …};classclsTwo{public: …private: … friendclassclsOne; //聲明友元類};6.6.2友元類【例6.17】友元類的聲明與使用。#includeiostream#includecmathusingnamespacestd;classRect; //Rect定義的前向聲明classPoint{public: Point(doublei,doublej){ //構造函數 x=i;y=j; } voiddisplay()const{ cout(x,y)endl; } friendclassRect;private: doublex,y;};6.6.2友元類classRect{public: Rect(doublelx,doublely,doublerx,doublery); doublegetLength()const; //返回矩形的長度 doublegetWidth()const; //返回矩形的寬度 doublegetCircum()const; //返回矩形的周長 doublegetArea()const; //返回

文档评论(0)

子不语 + 关注
官方认证
服务提供商

平安喜乐网络服务,专业制作各类课件,总结,范文等文档,在能力范围内尽量做到有求必应,感谢

认证主体菏泽喜乐网络科技有限公司
IP属地山东
统一社会信用代码/组织机构代码
91371726MA7HJ4DL48

1亿VIP精品文档

相关文档