友元的概念和定义.ppt

友元的概念和定义.ppt

ID:52298465

大小:207.51 KB

页数:13页

时间:2020-04-04

友元的概念和定义.ppt_第1页
友元的概念和定义.ppt_第2页
友元的概念和定义.ppt_第3页
友元的概念和定义.ppt_第4页
友元的概念和定义.ppt_第5页
资源描述:

《友元的概念和定义.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第4章友元4.1友元的概念和定义4.2友元函数4.3友元成员4.4友元类4.5友元综合举例4.1友元的概念和定义一个对象的私有数据成员和成员函数只能在类定义的范围内使用,也就是说只能通过它的公有成员函数来访问。数据隐藏给两个类共享同一函数或数据带来了额外开销,这是因为每次访问这些共享内容都需要通过函数调用来完成。使用friend关键字,友元提供了在不同类的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。通过友元,一个普通函数或另一个类中的成员函数可以访问类中的私有成员和保护成员。友元的正确使用能提高程序的运行效率,但破坏了类的封装性和数据的隐蔽性,导致程序可维护性变

2、差,因此一定要谨慎使用。友元分为友元函数、友元成员和友元类三种,友元声明可放在类的公有、私有或保护部分,结果是一样的。遵循一定规则而使对象以外的软件系统能够不经过消息方式而直接访问对象内封装的数据成员的技术方法便是友元。友元是面向对象系统与过程系统衔接的纽带。例4.1没有使用友元时的学生成绩管理系统。友元函数定义则在类的外部,一般与类的成员函数定义放在一起。因为类重用时,一般友元是一起提供的。4.2友元函数友元函数是一种说明在类定义体内的非成员函数。friend〈返回值类型〉〈函数名〉(〈参数表〉){〈函数体〉}说明:(1)友元函数是在类中说明的一个函数,它不是该类的成员函数,

3、但允许访问该类的所有成员。它是独立于任何类的一般的外界函数。友元并不在类的范围中,它们也不用成员选择符(.或->)调用,除非它们是其它类的成员。友元函数的说明:(2)由于友元函数不是类的成员,所以没有this指针,访问该类的对象的成员时,必须使用对象名,而不能直接使用类的成员名。(3)虽然友元函数是在类中说明的,但其名字的作用域在类外,作用域的开始点在说明点,结束点和类名相同。因此,友元说明可以代替该函数的函数说明。(4)如果在说明友元时给出了该函数的函数体代码,则它是内联的。友元函数的举例:【例4.2】友元函数的定义和使用一。【例4.3】友元函数的定义和使用二。【例4.4】友

4、元函数的定义和使用三(自学)。4.3友元成员另一个类的成员函数可以作为某个类的友元,只是在声明友元函数时要加上成员函数所在的类名,称为友元成员。声明如下:friend类名∷成员函数名;与上一种友元比较,此种友元的存取范围要小得多。因为这里的友元函数只是一个类中的一个成员,friend授权该函数可以访问宣布其为友元的类中的所有成员。【例4.5】友元成员4.4友元类某一个类可以是另一个类的友元,这样作为友元的类中的所有成员函数都可以访问另一个类中的私有成员。友元类的说明方式如下:friendclass〈类名〉;【例4.6】友元类一。(自学)【例4.7】友元类二。注意:(1)友元关系

5、不具有传递性。假设类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.

6、在下面有关友元函数的描述中,正确的说法是:A.友元函数是独立于当前类的外部函数B.一个友元函数不能同时定义为两个类的友元函数C.友元函数必须在类的外部定义D.在外部定义友元函数时,必须加关键字friend

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

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

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