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

发布于 2024-09-25 22:19:18 字数 91 浏览 4 评论 0原文

这合法吗?如果没有,下面的代码允许这样做吗?

class Foo
{
    friend class Foo;
}

Is this legal? If not, will the following code allow this?

class Foo
{
    friend class Foo;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

金橙橙 2024-10-02 22:19:19

如果类是模板,则它们自己交友是有意义的,因为具有不同参数的每个实例化都是不同的类。

Classes friending themselves makes sense if they're templates, as each instantiation with distinct parameters is a different class.

还在原地等你 2024-10-02 22:19:18

那是多余的。 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 的私有数据成员。

That's redundant. Foo already has access to all Foo members. Two Foo objects can access each other's members.

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

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

The above code will work just fine. B will access a's private data member.

江挽川 2024-10-02 22:19:18

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

Yes it is legal for an object of class Foo to access the private members of another object of class Foo. This is frequently necessary for things like copy construction and assignment, and no special friend declaration is required.

活雷疯 2024-10-02 22:19:18

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

warning: class ‘Foo’ is implicitly friends with itself

It is redundant and unnecessary. Moreover, I get the following warning in g++

warning: class ‘Foo’ is implicitly friends with itself
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文