c++ - 两个类(class)可以成为 friend 吗?

标签 c++

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

  1. 两个类可以互相成为 friend ;以便他们可以自由访问私有(private) 和 protected 另一方成员(我相信答案是肯定的,当然我 可以简单地尝试一下!)。任何详细的引用资料或其他带有答案的问题链接 也很受欢迎。我知道前向声明并包含保护编译器 前置指令及其使用。我的问题与语义更相关 C++ 语言在这种可能性方面可以提供什么 相互友元以及如何正确使用它。
  2. 这是普遍推荐的吗?人们是否定期采用这种设计? 在什么情况下这是推荐的设计(最好有一些 示例)。

最佳答案

你们可以拥有相互的友元:

class A {
    friend class B;
};

class B {
    friend class A;
};

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

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

关于c++ - 两个类(class)可以成为 friend 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5208833/

相关文章:

c++ - 优化 C++11 随机生成器的使用

c++ - glVertex3f 和 glVertex2fx 显示不同的结果

c++ - 类型特征与静态成员的优势?

c++ 从 3 个浮点值生成 unordered_map 的键

c++ - Cython:将 C++ `std::complex<double>` 的 vector 转换为 C `double complex`

c++ - 序号Linux的功能地址?

c++ - 使用-pthreads for Openwrt Linux-Get segmentation fault编译C++

c++ - 无法根据opencv RotatedRect教程得到相同的图像结果

c++ - 将 39567865 个无符号字符加载到 RAM : Valid approach?

c++ - 在此 "number of elements"宏中添加虚拟字符的目的是什么?