C++ 中友元函数/类的真正用途是什么?你能举一个例子,只有friend
正确的方法吗?
谢谢
“在 C++ 中,只有你的朋友才能访问你的私密部分。”
朋友的重点是您可以将您的软件打包成更小的分组,如朋友类等,同时仍然允许访问类的内部。可以说,与没有交友相比,这可以让您更好地控制封装。
我认为经常使用朋友功能是一个可读性问题。例如,下一个重载运算符看起来是对称的,这可能对代码阅读器有好处。
friend const X operator+(const X&, const X&);
inline const X operator+(const X& arg1, const X& arg2)
{
X r;
r.x = arg1.x + arg2.x;
return r;
}
但主要的一点是他们能够访问两个不同类别的私有数据。
在 C++ 中使用friend
实际上是非常不鼓励的(它有点打破了整个封装的想法),但我想到了一个只有朋友才是正确方法的例子:
friend ostream & operator<< (ostream & out, const MyClass & C);
friend istream & operator>> (istream & in, MyClass & C);