14

我对 C++ 中的友元函数有疑问。Friend 函数不是 claas 的成员函数,可以直接从 main 调用。那么,如果我们将函数friend保留privatepublic. class我通常注意到这些friend功能总是在公共部分。在什么情况下我们应该将friend函数保持在private.

4

5 回答 5

20

编译器不会关注友元函数是在类的私有部分还是公共(或受保护)部分中。大多数人把它放在公共部分,但无论你把它放在哪里,它都是公开可见的。

于 2012-06-19T19:18:52.430 回答
4

public:如果您在类的或private:部分中声明它并不重要。无论如何,它将发挥相同的作用。

于 2012-06-19T19:22:24.720 回答
2

friend关键字只是在这里授予对属于您的类的private另一个函数的访问权限。由于它不属于您的课程,因此不受说明符的影响。public/private

于 2012-06-19T19:36:32.220 回答
2

在本节中使用友元声明的一个原因private是它可以将它们与它们应该有权访问的成员函数或对象保持在一起。

除此之外,没有任何区别。

于 2012-06-19T19:32:00.620 回答
0

你把友谊声明放在哪里都没关系。它可能存在于任何类部分(公共、私有或受保护)内,但必须放在任何函数或聚合之外。

这是来自 www.cprogramming.com 的一个很好的示例和解释:

一个类查看另一个类的私有变量通常很有用,即使这些变量可能不应该成为该类支持的公共接口的一部分。例如,如果您正在编写二叉树,您可能希望使用具有私有数据的 Node 类,但实际上将节点组合在一起的函数能够直接访问数据而无需工作,这仍然很方便通过节点接口。有时,访问器函数甚至可能不适合对数据进行间接访问。

于 2017-01-26T17:30:53.693 回答