访问同一类对象的私有元素
这合法吗?如果没有,下面的代码允许这样做吗?
class Foo
{
friend class Foo;
}
Is this legal? If not, will the following code allow this?
class Foo
{
friend class Foo;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果类是模板,则它们自己交友是有意义的,因为具有不同参数的每个实例化都是不同的类。
Classes friending themselves makes sense if they're templates, as each instantiation with distinct parameters is a different class.
那是多余的。 Foo 已经可以访问所有 Foo 成员。两个 Foo 对象可以访问彼此的成员。
上面的代码可以正常工作。 B 将访问 a 的私有数据成员。
That's redundant. Foo already has access to all Foo members. Two Foo objects can access each other's members.
The above code will work just fine. B will access a's private data member.
是的,类
Foo
的对象访问类Foo
的另一个对象的私有成员是合法的。这对于复制构造和赋值之类的事情通常是必要的,并且不需要特殊的友元声明。Yes it is legal for an object of class
Foo
to access the private members of another object of classFoo
. This is frequently necessary for things like copy construction and assignment, and no special friend declaration is required.这是多余的,也是不必要的。此外,我在 g++ 中收到以下警告
It is redundant and unnecessary. Moreover, I get the following warning in g++