关于对"友元函数"的认识!(求助!!)

yanpinghui 2002-12-30 02:57:16
关于C++中"友元函数"这一知识点.我现在还有点模糊!
你说"友元"的作用到底是体现了它的"封装性"还是"提高了提高了"程序的运行效率",减少了系统的开销呢?好像都有点道理似的.(大家是怎样认为的呢?)
...全文
29 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
stevedai 2002-12-31
  • 打赏
  • 举报
回复
楼上分析的很对!C++设计的每个特性都是用来提高软件开发效率的,而不是
追求纯粹的OO,记住!任何特性得到一些,必然失去一些》
shornmao 2002-12-30
  • 打赏
  • 举报
回复
友员函数并没有降低封装性。而是兼顾效率和封装性的前提下提高了耦合性。
为什么呢?
假设一个函数(或者类),需要存取另一个类的成员,为了不破坏类的封装性,所以不能将类成员设计为public的,但是为了兼顾效率(调用函数产生的负担),又不便调用该类成员的getter和setter成员函数。如果将成员函数作为inline实现(假定编译器认为代码适合inline),那么也破坏了封装性,因为向类用户暴露了实现细节,尤其是,类用户可以自由修改成员函数的实现代码,从而有可能得到意想不到的结果。
所以,这就导致了友员这一概念的设计,他既不破坏封装性--类用户仍然不清楚类的实现细节,也适当的兼顾了效率--友员函数/类可以直接存取类的成员。
但是结果是,友员和提供友员的类之间的结合度增加,在OO的术语中叫做耦合度。
按照OO的观点,良好的类设计应该是低耦合/高聚合的,这就是友员的代价。
yatuor 2002-12-30
  • 打赏
  • 举报
回复
降低了封装性,和继承一样,天生的矛盾
对效率也没什么影响,就是写起来方便点

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧