C++ 访问同一类的对象的私有元素

C++ 访问同一类的对象的私有元素,c++,class,private,private-members,C++,Class,Private,Private Members,这合法吗?如果没有,以下代码是否允许此操作 class Foo { friend class Foo; } 那是多余的。Foo已经拥有访问所有Foo成员的权限。两个Foo对象可以访问彼此的成员 class Foo { public: int touchOtherParts(const Foo &foo) {return foo.privateparts;} private: int privateparts; }; Foo a,b; b.touchOtherParts

这合法吗?如果没有,以下代码是否允许此操作

class Foo
{
    friend class Foo;
}

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

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

Foo a,b;
b.touchOtherParts(a);

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

这是多余和不必要的。此外,我在g中得到以下警告++

warning: class ‘Foo’ is implicitly friends with itself

是,类
Foo
的对象访问另一类
Foo
对象的私有成员是合法的。这对于复制构造和赋值是经常需要的,并且不需要特殊的朋友声明。

类本身是有意义的,如果它们是模板,因为每个不同参数的实例化都是不同的类。

@亚历克斯:这是一个古老的C++双关语,C++可能是唯一允许朋友接触个人隐私的语言: