(4.9)--(10)友元面向对象程序设计.pptVIP

  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文档。上传文档
查看更多

面向对象程序设计1

第1章C++语言概述2

友元01.友元函数02.友元类3

第4章类与对象友元友元函数友元类class类名{……//类中的其他成员friend类型函数名(形参表);……//类中的其他成员};友元的概念C++提供了一种允许外部类和外部函数存取类的私有成员和保护成员的辅助方法,即将它们声明为一个给定类的友元,使其具有类成员函数的访问权限。友元提供了不同类或对象的函数成员之间、类的函数成员与一般函数之间进行数据共享的机制。通过友元机制,一个普通函数或者类的函数成员可以访问到封装在某一个类的私有数据成员,即把数据的隐藏打开了一个小窗口,从中看到类的一些内部属性;友元在一定程度上破坏了封装,这需要设计者在共享和封装之间找到一个平衡。友元有两种1.友元函数4

第4章类与对象友元【例4-26】设计一个复数类Complex,用成员函数、友元函数分别实现两个复数类对象的比较,即看两个复数是否相等。#includeiostream.hclassComplex{public:Complex();Complex(constComplex);Complex(doublere,doubleim);friendboolequal(Complexc1,Complexc2);voidset_real(doublere){real=re;}voidset_imag(doubleim){imag=im;}doubleget_real(){returnreal;}doubleget_imag(){returnimag;}voiddisp(){coutreal+imagi;}private: doublereal; doubleimag;};友元函数声明Complex::Complex(doublere,doubleim){real=re;imag=im;}Complex::Complex(constComplexcomp){real=comp.real; imag=comp.imag;}友元函数实现boolequal(Complexc1,Complexc2){if((c1.real==c2.real)(c1.imag==c2.imag))returntrue;elsereturnfalse;}boolequal(Complexc1,Complexc2){if((c1.get_real()==c2.get_real())(c1.get_imag()==c2.get_imag()))returntrue;elsereturnfalse;}成员函数实现5

intmain(){Complexc1(2,3),c2(3,4);if(equal(c1,c2))cout这两个复数相等!endl;elsecout这两个复数不相等!endl;return0;}说明:友元函数为非成员函数,以关键字friend声明,一般在类中进行声明,在类外进行定义。友元函数的声明可以放在类声明中的任何位置,即不受访问权限的控制,可以在类内实现,可以在类外实现,在类外实现时不再需要friend关键字。友元函数不是函数成员,它是类的朋友,没有类域限定符。友元函数可以通过对象名访问类的所有成员,包括私有成员。普通函数声明为友函数,可以访问类中所有的成员。一个函数可以是多个类的友元函数,可以将一个类的成员函数声明为另一个类的友元。格式friend函数类型类名::友元函数名(参数表);C++不允许将构造函数、析构函数和虚函数声明为友元函数。在有些编译器中不支持#includeiostream头文件,可改为#includeiostream.h,这是由于某些编译器不兼容C++新标准造成的。第4章类与对象友元6

第4章类与对象友元2.友元类当一个类中的所有函数成员都是另一个类的友元的时候,我们可以定义整个类是另一个类的友元,此时该友元称为友元类。classStudent;classTeacher{public: ……//类中的其他成员 voidgradeofcourse(Students);private: intnumberofstu; ……//类中的其他成员};classStudent{public: ……//类中的其他成员. friendclassTeacher;private: floatgrad; ……

文档评论(0)

177****2883 + 关注
实名认证
文档贡献者

热爱教育,专注于教育领域创作与分享,让我们共同进步。

1亿VIP精品文档

相关文档