C ++的朋友函数/类使用?

时间:2011-12-23 05:10:46

标签: c++ encapsulation friend information-hiding

C ++中朋友函数/类的真正用途是什么?你能举一个例子,只有friend是正确的方法吗?

由于

3 个答案:

答案 0 :(得分:8)

“在C ++中,只有您的朋友可以访问您的私人部分。”

朋友的观点是,您可以将软件打包成较小的分组,例如朋友类等,同时仍允许访问类的内部。这可以让你在没有友情的情况下保持对封装的更好控制。

答案 1 :(得分:0)

我认为朋友的功能使用常常是可读性问题。例如,下一个重载运算符看起来是对称的,这可能对代码阅读器有用。

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;
}

但主要是它能够访问两个不同类的私人数据。

答案 2 :(得分:-2)

在C ++中使用friend实际上是非常沮丧的(它有点打破了整个封装的想法),但我想到了一个只有朋友才是正确方法的例子:

friend ostream & operator<< (ostream & out, const MyClass & C);
friend istream & operator>> (istream & in, MyClass & C);