
《面向对象程序设计》课件第4章 友元.pptx
《《面向对象程序设计》课件第4章 友元.pptx》由会员分享,可在线阅读,更多相关《《面向对象程序设计》课件第4章 友元.pptx(14页珍藏版)》请在文库网上搜索。
1、第第第第4 4 4 4章章章章 友友友友 元元元元4.1 友元的概念和定义友元的概念和定义4.2 友元函数友元函数4.3 友元成员友元成员4.4 友元类友元类4.5 友元综合举例友元综合举例4.1 4.1 友元的概念和定义友元的概念和定义 一一个个对对象象的的私私有有数数据据成成员员只只能能在在类类定定义义的的范范围围内内使使用用,也也就就是是说说只只能能通通过过它它的的公公有有成成员员函函数数来来访访问问。对对象象的的这这种种数数据据封封装装和和数数据据隐隐藏藏使使对对象象和和外外界界以以一一堵堵不不透透明明的的墙墙隔隔开开,这这给给软软件件设设计计者者增增加加了了负负担担,它它要要求求设设
2、计计者者确确保保为为每每个个类类提提供供足足够够的的方方法法,以以应应对对所所遇遇到的种种情况。到的种种情况。数数据据隐隐藏藏给给两两个个类类共共享享同同一一函函数数或或数数据据带带来来了了额额外外开开销销,这这是是因因为为每每次次访访问问这这些些共共享享内内容容都都需需要要通通过过函数调用来完成。函数调用来完成。4.1 4.1 友元的概念和定义友元的概念和定义 在在某某些些情情况况下下,把把成成员员级级别别的的访访问问控控制制赋赋于于非非本本类类成成员员的的普普通通函函数数或或者者另另一一个个类类的的成成员员函函数数时时,会会更更方方便便一一些些。使使使使用用用用friend关关关关键键键键
3、字字字字,友友友友元元元元提提提提供供供供了了了了在在在在不不不不同同同同类类类类的的的的成成成成员员员员函函函函数数数数之之之之间间间间、类类类类的的的的成成成成员员员员函函函函数数数数与与与与一一一一般般般般函函函函数数数数之之之之间间间间进进进进行行行行数数数数据据据据共共共共享享享享的的的的机机机机制制制制。通通过过友友元元,一一个个普普通通函函数数或或另另一一个个类类中中的的成成员员函函数可以访问类中的私有成员和保护成员。数可以访问类中的私有成员和保护成员。C+C+中中的的友友元元为为“封封装装”这这堵堵不不透透明明的的墙墙开开了了一一个个小小孔,外界可以通过这个小孔窥视类内部的秘密
4、。孔,外界可以通过这个小孔窥视类内部的秘密。友元分为友元分为友元函数友元函数、友元成员友元成员和和友元类友元类三种。三种。4.1 4.1 友元的概念和定义友元的概念和定义 在在某某些些情情况况下下,把把成成员员级级别别的的访访问问控控制制赋赋于于非非本本类类成成员员的的普普通通函函数数或或者者另另一一个个类类的的成成员员函函数数时时,会会更更方方便便一一些些。使使使使用用用用friend关关关关键键键键字字字字,友友友友元元元元提提提提供供供供了了了了在在在在不不不不同同同同类类类类的的的的成成成成员员员员函函函函数数数数之之之之间间间间、类类类类的的的的成成成成员员员员函函函函数数数数与与与
5、与一一一一般般般般函函函函数数数数之之之之间间间间进进进进行行行行数数数数据据据据共共共共享享享享的的的的机机机机制制制制。通通过过友友元元,一一个个普普通通函函数数或或另另一一个个类类中中的的成成员员函函数可以访问类中的私有成员和保护成员。数可以访问类中的私有成员和保护成员。C+C+中中的的友友元元为为“封封装装”这这堵堵不不透透明明的的墙墙开开了了一一个个小小孔,外界可以通过这个小孔窥视类内部的秘密。孔,外界可以通过这个小孔窥视类内部的秘密。友元分为友元分为友元函数友元函数、友元成员友元成员和和友元类友元类三种。三种。4.1 4.1 友元的概念和定义友元的概念和定义 在在某某些些情情况况下
6、下,把把成成员员级级别别的的访访问问控控制制赋赋于于非非本本类类成成员员的的普普通通函函数数或或者者另另一一个个类类的的成成员员函函数数时时,会会更更方方便便一一些些。使使使使用用用用friend关关关关键键键键字字字字,友友友友元元元元提提提提供供供供了了了了在在在在不不不不同同同同类类类类的的的的成成成成员员员员函函函函数数数数之之之之间间间间、类类类类的的的的成成成成员员员员函函函函数数数数与与与与一一一一般般般般函函函函数数数数之之之之间间间间进进进进行行行行数数数数据据据据共共共共享享享享的的的的机机机机制制制制。通通过过友友元元,一一个个普普通通函函数数或或另另一一个个类类中中的的
7、成成员员函函数可以访问类中的私有成员和保护成员。数可以访问类中的私有成员和保护成员。C+C+中中的的友友元元为为“封封装装”这这堵堵不不透透明明的的墙墙开开了了一一个个小小孔,外界可以通过这个小孔窥视类内部的秘密。孔,外界可以通过这个小孔窥视类内部的秘密。友元分为友元分为友元函数友元函数、友元成员友元成员和和友元类友元类三种。三种。注意:注意:友元能够使得普通函数直接访问类的友元能够使得普通函数直接访问类的友元能够使得普通函数直接访问类的友元能够使得普通函数直接访问类的保护数据,避免了类成员函数的频繁调用,可以节约保护数据,避免了类成员函数的频繁调用,可以节约保护数据,避免了类成员函数的频繁调
8、用,可以节约保护数据,避免了类成员函数的频繁调用,可以节约处理器开销,提高程序的效率。但矛盾的是,即使是处理器开销,提高程序的效率。但矛盾的是,即使是处理器开销,提高程序的效率。但矛盾的是,即使是处理器开销,提高程序的效率。但矛盾的是,即使是最大限度的保护,避免把类成员全部设置成最大限度的保护,避免把类成员全部设置成最大限度的保护,避免把类成员全部设置成最大限度的保护,避免把类成员全部设置成publicpublic,同样也破坏了类的封装特性,这即是同样也破坏了类的封装特性,这即是同样也破坏了类的封装特性,这即是同样也破坏了类的封装特性,这即是友元的缺点友元的缺点,在现在在现在在现在在现在CPU
9、CPUCPUCPU速度越来越快的今天我们并不推荐使用它,速度越来越快的今天我们并不推荐使用它,速度越来越快的今天我们并不推荐使用它,速度越来越快的今天我们并不推荐使用它,但它作为但它作为但它作为但它作为C+C+C+C+一个必要的知识点,一个完整的组成部一个必要的知识点,一个完整的组成部一个必要的知识点,一个完整的组成部一个必要的知识点,一个完整的组成部分,我们还是需要讨论一下的。分,我们还是需要讨论一下的。分,我们还是需要讨论一下的。分,我们还是需要讨论一下的。4.2 4.2 友元函数友元函数 在在类类中中声声明明一一个个普普通通函函数数,在在前前面面加加上上friendfriend修修饰饰,
10、那那么么这这个个普普通通函函数数就就成成了了该该类类的的友友友友元元元元函函函函数数数数,可可以以访访问问该该类的一切成员类的一切成员 。class Circle struct point int x,y;center;int radius;public:double getArea();double getDistance();friend void display(Circle);/声明普通函数声明普通函数display为类为类Circle的友元函数的友元函数 友元函数的说明友元函数的说明方法方法:f f f friendriendriendriend ();友元函数友元函数的的特点:特点
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象程序设计 面向对象程序设计课件第4章 友元 面向 对象 程序设计 课件
