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