已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章 友元,4.1 友元的概念和定义 4.2 友元函数 4.3 友元成员 4.4 友元类 4.5 友元综合举例,4.1 友元的概念和定义,一个对象的私有数据成员和成员函数只能在类定义的范围内使用,也就是说只能通过它的公有成员函数来访问。 数据隐藏给两个类共享同一函数或数据带来了额外开销,这是因为每次访问这些共享内容都需要通过函数调用来完成。,使用friend关键字,友元提供了在不同类的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。通过友元,一个普通函数或另一个类中的成员函数可以访问类中的私有成员和保护成员。 友元的正确使用能提高程序的运行效率,但破坏了类的封装性和数据的隐蔽性,导致程序可维护性变差,因此一定要谨慎使用。 友元分为友元函数、友元成员和友元类三种,友元声明可放在类的公有、私有或保护部分,结果是一样的。,遵循一定规则而使对象以外的软件系统能够不经过消息方式而直接访问对象内封装的数据成员的技术方法便是友元。友元是面向对象系统与过程系统衔接的纽带。 例4.1 没有使用友元时的学生成绩管理系统。 友元函数定义则在类的外部,一般与类的成员函数定义放在一起。因为类重用时,一般友元是一起提供的。,4.2 友元函数,友元函数是一种说明在类定义体内的非成员函数。 friend 返回值类型函数名(参数表) 函数体 说明: (1) 友元函数是在类中说明的一个函数,它不是该类的成员函数,但允许访问该类的所有成员。它是独立于任何类的一般的外界函数。友元并不在类的范围中,它们也不用成员选择符(.或-)调用,除非它们是其它类的成员。,友元函数的说明:,(2) 由于友元函数不是类的成员,所以没有this指针,访问该类的对象的成员时,必须使用对象名,而不能直接使用类的成员名。 (3) 虽然友元函数是在类中说明的,但其名字的作用域在类外,作用域的开始点在说明点,结束点和类名相同。因此,友元说明可以代替该函数的函数说明。 (4) 如果在说明友元时给出了该函数的函数体代码,则它是内联的。,友元函数的举例:,【例4.2】友元函数的定义和使用一。 【例4.3】友元函数的定义和使用二。 【例4.4】友元函数的定义和使用三(自学)。,4.3 友元成员,另一个类的成员函数可以作为某个类的友元,只是在声明友元函数时要加上成员函数所在的类名,称为友元成员。声明如下: friend 类名成员函数名; 与上一种友元比较,此种友元的存取范围要小得多。因为这里的友元函数只是一个类中的一个成员,friend授权该函数可以访问宣布其为友元的类中的所有成员。 【例4.5】友元成员,4.4 友元类,某一个类可以是另一个类的友元,这样作为友元的类中的所有成员函数都可以访问另一个类中的私有成员。友元类的说明方式如下: friend class 类名; 【例4.6】友元类一。(自学) 【例4.7】友元类二。,注意: (1) 友元关系不具有传递性。假设类A是类B的友元,类B是类C的友元,除非在类C中声明了类A是它的友元类,否则类A并不是类C的友元。 (2) 友元关系是单向的,不具有交换性。假设类A是类B的友元(即在类B定义中声明A为友元类),类B是否是A的友元,要看在类中是否有相应的声明。,4.5 友元综合举例,【例4.8】定义复数Complex类,使用友元函数,完成复数的加法、减法、乘法运算,以及对复数的输出。,习题:,1. 友元的作用是什么? 2. 友元概念的引入虽然方便了类之间的数据共享,但是否削弱了对象的封装性? 3友元的作用之一是: A提高程序的运行效率 B加强类的封装性 C实现数据的隐藏性 D增加成员函数的种类,4在下面有关友元函数的描述中,正确的说法是: A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年新能源行业供应链金融风险管理及市场拓展趋势报告
- 三箭置业合同
- 2025年盱眙中考历史试卷及答案
- 石首租房合同
- 原油宝交易合同
- 2025年工业转型地理题库及答案
- 法务审计知识题库及答案
- 2025年表面处理工考试题及答案
- 地毯安装合同
- 2025年化工安全知识考试试题题库及答案
- 三年级数学口算天天练(直接打印)
- 肠镜检查的准备及心理护理
- 《清华大学介绍》课件
- 《定额措施费计算》课件
- DB45T 2177-2020 糖料甘蔗入厂规程
- 江苏省扬州市仪征市2024-2025学年七年级上学期期中道德与法治试题(含答案解析)
- 药物过敏性休克应急处理
- 江西省“金太阳大联考”2025届高三上学期10月联考数学试题(含答案)
- 辽宁省大连市金普新区2024-2025学年七年级上学期期中质量检测地理试卷(含答案)
- 食品添加剂:面粉处理剂
- 人教版道德与法治九年级上册复习课件:第四单元和谐与梦想(共66张)
评论
0/150
提交评论