友元函数和友元类有什么区别?

9
友元函数和友元类有什么区别?在哪里应该使用friend关键字?

2
https://dev59.com/QXNA5IYBdhLWcg3wGJwV - DumbCoder
@DumbCoder:这是一个很好的相关问题,而不是真正的重复。 (我知道你没有指责这是一个重复,但我还是写下了这个评论,以防止其他人得出结论。) - sbi
5个回答

14

简而言之,一个是类(class),一个是函数(function)。对于函数,只有该函数可以访问私有成员。对于类, 整个类和所有的成员函数都可以访问被授权的类的私有成员。

friend关键字用于授权访问私有数据成员。有时你可能需要一个辅助类或者补充类去访问不同的类的私有成员。对于函数来说,一个常见的例子是重载运算符。也许你想要重载加号运算符,你可以在类外声明一个operator+函数(这样可以不使用对象调用),并且它将需要访问私有类数据。

查看这个网站详细了解两者及如何使用。


2
我会彻底失败,如果只说了第一句话,所以请给我一个“+1”,如果我能对此发表更多的看法。 - sbi

2

友元函数用于访问类的非公有成员。一个类可以通过将其他类或者非成员函数声明为友元,从而允许它们访问自己的私有数据。 友元类可以完全访问另一个类的私有成员,而无需成为该类的成员。


2

友元函数

  1. friend关键字用于声明。
  2. 在编写函数的定义时,不需要使用friend关键字。
  3. 通过友元函数,我们可以允许外部函数访问类成员。

友元类

  1. 使用friend关键字声明友元类:friend class a;
  2. 在编写类时,不需要使用friend关键字。
  3. 使用friend类,我们可以将一个类的成员访问另一个类。

0

Friend关键字也可以与函数和类一起使用。

这意味着如果一个类被声明为友元,它就可以访问所有数据成员(私有和公共)的类,该类已将其声明为友元。

我已经在我的博客中用示例解释了它们之间的区别:友元函数和友元类的区别


0

1)友元函数用于访问类的私有数据变量,而成员函数用于访问同一类的私有数据变量。

2)您可以在主函数中调用友元函数而不需要任何对象,但要调用类的成员函数,您只需要创建相同类的对象。

3)友元函数可以被视为非成员函数,但成员函数不能被视为类的非成员函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接