在C++中,为什么要使用到友元函数呢?有什么好处呢?能否举个例子
6个回答
展开全部
友元主要用于操作符重载,比如两个类之间的+,-,×,/等,其他情况下使用友元意义不大。因为一般情况下,友元函数都是独立于类之外的外部函数,比如 CFoo& operator +(const CFoo &a, const CFoo &b); 为了方便这个友元函数访问CFoo内部的成员变量,才需要在 CFoo内部声明一下这个对这个外部加号函数友好。
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
方便调用类~因为类里面有一些是protect,是无法直接调用的,而友元函数就提供了这个条件
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
恩,就像楼上说的差不多,但是详细一些就是有一些函数例如重载没办法作为类的成员函数,但同时又需要调用类里的私有或保护成员,所以需要将这类函数声明为友元函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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的友元
};
在实现类之间数据共享时,减少系统开销,提高效率。
如果类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的友元
};
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询