访问同类对象的私有元素

Xir*_*dus 7 c++ private class private-members

这合法吗?如果没有,以下代码是否允许这样做?

class Foo
{
    friend class Foo;
}
Run Code Online (Sandbox Code Playgroud)

Jos*_*shD 22

那是多余的.Foo已经可以访问所有Foo成员.两个Foo对象可以访问彼此的成员.

class Foo {
public:
  int touchOtherParts(const Foo &foo) {return foo.privateparts;}
private:
  int privateparts;
};

Foo a,b;
b.touchOtherParts(a);
Run Code Online (Sandbox Code Playgroud)

上面的代码可以正常工作.B将访问私人数据成员.

  • +1非常原创与触摸私人部分 (5认同)
  • ......但不是父母 (3认同)
  • @Alex:这是一个旧的C++双关语,C++可能是唯一允许一个人的朋友触摸一个私人部分的语言:) (2认同)

Tyl*_*nry 5

是的,类的对象Foo访问另一个类的对象的私有成员是合法的Foo.这对于复制构造和分配等常常是必要的,并且不需要特殊的朋友声明.