【问题标题】:what is the difference between friend function and friend class?朋友功能和朋友类有什么区别?
【发布时间】:2011-04-17 02:57:09
【问题描述】:

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

【问题讨论】:

  • @DumbCoder:这是一个很好的相关问题,而不是真正的骗子。 (我知道你并没有指责这是一个骗局,但我还是写了这篇评论,以防止其他人草率下结论。)

标签: c++ class function friend


【解决方案1】:

简而言之,一个是类,一个是函数。对于函数,只有一个函数可以访问私有成员。对于一个类,整个类及其所有函数都可以访问结交类的私有成员。

friend 关键字用于授予对私有数据成员的访问权限。有时您可能需要帮助类或免费类来访问不同类的私有成员。对于函数,一个常见的例子是运算符重载。也许您想重载 + 运算符。您可以在类外部声明一个 operator+ 函数(因此可以在没有对象的情况下调用它),它需要访问私有类数据。

查看this site 了解两者的详细说明以及如何使用它们。

【讨论】:

  • +1 寻找比第一句话更多的内容。我会完全失败的。
【解决方案2】:

好友功能

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

好友类

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

【讨论】:

    【解决方案3】:

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

    2)你可以在没有任何对象的情况下调用main函数中的friends函数,但调用你的类的成员函数只需要创建同一个类的对象。

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

    【讨论】:

      【解决方案4】:

      友元函数用于访问类的非公共成员。一个类可以允许非成员函数和其他类通过使它们成为朋友来访问自己的私有数据 Friend 类可以完全访问另一个类的私有数据成员,而不是该类的成员。

      【讨论】:

        【解决方案5】:

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

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

        我已经在博客中用示例解释了它们之间的区别:Difference between friend function and friend class

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-09-24
          • 2011-08-10
          • 1970-01-01
          • 2015-11-24
          • 2015-10-21
          • 2015-09-29
          相关资源
          最近更新 更多