在C++中,为什么要使用到友元函数呢?有什么好处呢?能否举个例子

 我来答
congya001
推荐于2017-09-04 · TA获得超过5044个赞
知道小有建树答主
回答量:442
采纳率:0%
帮助的人:352万
展开全部
友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数。。类授予它的友元特别的访问权。通常同一个开发者会出于技术和非技术的原因,控制类的友元和成员函数(否则当你想更新你的类时,还要征得其它部分的拥有者的同意)。
举个通俗的例子吧,
一个家庭,对一般的访客开发的是客厅,厨房等,但卧室这样的私人地方一般访客是禁止访问的,而好朋友 就可以进去了,
gphone2008
2014-03-17 · TA获得超过380个赞
知道小有建树答主
回答量:224
采纳率:100%
帮助的人:159万
展开全部
友元主要用于操作符重载,比如两个类之间的+,-,×,/等,其他情况下使用友元意义不大。因为一般情况下,友元函数都是独立于类之外的外部函数,比如 CFoo& operator +(const CFoo &a, const CFoo &b); 为了方便这个友元函数访问CFoo内部的成员变量,才需要在 CFoo内部声明一下这个对这个外部加号函数友好。
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
在学府园滑雪的彗星
2012-11-29 · TA获得超过234个赞
知道小有建树答主
回答量:216
采纳率:0%
帮助的人:144万
展开全部
方便调用类~因为类里面有一些是protect,是无法直接调用的,而友元函数就提供了这个条件
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
松怀山f
2012-11-29 · TA获得超过395个赞
知道答主
回答量:54
采纳率:0%
帮助的人:30.4万
展开全部
恩,就像楼上说的差不多,但是详细一些就是有一些函数例如重载没办法作为类的成员函数,但同时又需要调用类里的私有或保护成员,所以需要将这类函数声明为友元函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
孔方兄文化
推荐于2018-10-14 · 专注交通及钱币收藏方面
孔方兄文化
采纳数:5491 获赞数:96686

向TA提问 私信TA
展开全部
1、在C++中,使用到友元函数的原因:
在实现类之间数据共享时,减少系统开销,提高效率。
如果类A中的函数要访问类B中的成员(例如:智能指针类的实现),那么类A中该函数要是类B的友元函数。具体来说,是为了使其他类的成员函数直接访问该类的私有变量。即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同一函数。
2、使用到友元函数的好处:
能够提高效率,表达简单、清晰。
3、例子:
使用单个声明使Y类的所有函数成为类X的友元,它提供一种类之间合作的一种方式,使类Y的对象可以具有类X和类Y的功能。
class girl;
class boy

{

public:
  void disp(girl &);
};
void boy::disp(girl &x) //函数disp()为类boy的成员函数,也是类girl的友元函数
{
  cout<<"girl's name is:"<<x.name<<",age:"<<x.age<<endl;//借助友元,在boy的成员函数disp中,借助girl的对象,直接访问girl的私有变量。
}
class girl
{
private:
  char *name;
  int age;
  friend boy; //声明类boy是类girl的友元
};
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式