两个班可以互相交往吗?

时间:2011-03-06 05:08:04

标签: c++

我还没有找出具体案例。但我即将着手编写一些我认为最终需要这些代码的代码;所以我想知道是否:

  1. 两个班可以互相交流;这样他们就可以自由访问私人 和另一方受保护的成员(我相信答案是肯定的,当然是我的答案 可以简单地尝试一下!)。任何详细的参考或其他问题链接与答案 也非常欢迎。我知道前向声明并包含后卫编译器 预指令及其使用。我的问题与语义更相关 关于这种可能性,它可以提供什么样的C ++语言 相互友谊以及如何正确使用它。
  2. 这通常是推荐的吗?人们经常使用这种设计吗? 在什么情况下这将是一个推荐的设计(最好有一些 实施例)。

1 个答案:

答案 0 :(得分:8)

可以有相互的友谊:

class A {
    friend class B;
};

class B {
    friend class A;
};

这是否有意义完全取决于您尝试解决的问题。在某些情况下它绝对有意义。

我当前项目中唯一利用相互友谊的例子是容器实现:容器类是其迭代器类的朋友,反之亦然。