我对C ++中的友元函数有疑问。 Friend函数不是claas的成员函数,可以直接从main调用。那么,如果我们将friend
函数保留在private
的{{1}}或public
部分内,会有什么不同。我一般都注意到class
函数总是在公共部分。在什么情况下我们应该将friend
函数保留在friend
。
答案 0 :(得分:19)
编译器不会关注友元函数是否属于类的私有或公共(或受保护)部分。大多数人把它放在公共部分,但无论你把它放在哪里,它都会公开显示。
答案 1 :(得分:4)
如果您在课程的public:
或private:
部分声明它,则无关紧要。它无论如何都会起作用。
答案 2 :(得分:2)
在private
部分中拥有好友声明的一个原因是它可以将它们与他们应该有权访问的成员函数或对象保持在一起。
除此之外,没有区别。
答案 3 :(得分:2)
friend
关键字就在这里,可以授予private
访问另一个不是类的功能。由于它不属于您的类,因此不受public/private
说明符的影响。
答案 4 :(得分:0)
你把友谊宣言放在哪里都没关系。 它可能存在于任何类部分(公共,私有或受保护)内,但必须放在任何函数或聚合之外。
以下是来自www.cprogramming.com的一个很好的例子和解释:
对于一个类来说,查看私有变量通常很有用 另一个类,即使这些变量可能不应该 该类支持的公共接口的一部分。例如,如果 如果您正在编写二叉树,则可能需要使用Node类 有私人数据,但它仍然是方便的 实际上将节点组合在一起以便能够访问的功能 数据直接无需通过Node接口工作。 有时,它甚至可能不适合访问器功能 甚至可以间接访问数据。