用C朋友功能++(Friend functions in C++)

2019-07-30 01:24发布

我有C ++与好友功能的疑问。 朋友函数不是克拉斯的成员函数,可以直接从主调用。 因此,没有什么区别,如果我们继续在friend中的函数privatepublic的部分class 。 我已经普遍注意到, friend功能总是在公共部分。 在什么情况下,我们应该保持friend中功能private

Answer 1:

编译器不关注任何一个友元函数是否在类的私有或公共(或保护)部分。 大多数人把它放在公共部分,但它会是公开可见的,无论你把它的。



Answer 2:

如果您在声明它不要紧public:private:类的一部分。 不管它会作用是相同的。



Answer 3:

具有在朋友的声明的原因之一private部分是它可以与他们都应该有机会获得成员函数或对象让他们在一起。

除此之外,没有什么区别。



Answer 4:

friend的关键字就是这里授予private另一个函数, 而不是你的类的一部分访问。 由于这是不是你的类的一部分,它不受public/private符。



Answer 5:

没关系,你把友谊声明。 它可以内部的任何类部件(公共,私人或保护)的存在,但必须在任何函数或聚合外面放。

这里是一个很好的例子,说明从www.cprogramming.com:

一类看到另一个类的私有变量,即使这些变量可能不应该做出的类支持公共接口的一部分它往往是有益的。 举例来说,如果你在写一个二叉树,您可能需要使用具有私有数据的节点类,但它仍然是方便,实际上节点结合起来才能够访问数据的功能,直接不必工作通过Node接口。 有时,它可能甚至不是一个访问功能,不断给数据甚至间接访问是适当的。



文章来源: Friend functions in C++