友元的概念和定义.ppt

上传人:w****2 文档编号:15046027 上传时间:2020-08-03 格式:PPT 页数:13 大小:275.86KB
返回 下载 相关 举报
友元的概念和定义.ppt_第1页
第1页 / 共13页
友元的概念和定义.ppt_第2页
第2页 / 共13页
友元的概念和定义.ppt_第3页
第3页 / 共13页
点击查看更多>>
资源描述
第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友元函数是独立于当前类的外部函数 B一个友元函数不能同时定义为两个类的友元函数 C友元函数必须在类的外部定义 D在外部定义友元函数时,必须加关键字friend,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!