c++ - 查找包含优于前向声明的用例

标签 c++ include dependencies forward-declaration

我现在正在重构我正在处理的 C++ 库(主要是遗留的),并且我正在尝试最小化包含指令和由这些包含产生的递归依赖性。 此外,为了使前向声明处理简洁明了,我在每个库中都维护了一个 fwd.h(就像 std 中的 iosfwd),这使库的客户生活更轻松

是否存在应优先于前向声明包含的情况(**当两种情况都编译时)?**

当前向声明更可取时,我对教科书解释不感兴趣。也许在某种程度上,前向声明(forward declaration)令人头疼。 std、boost 或其他完善的库中的策略是什么?

注意:我的编译器是 intel icc 12 - 只支持 C++03,只有很少的 C++11 特性,比如枚举的前向声明

ps:我已经解决了类似的讨论 - 似乎存在前向声明比包含更糟糕的情况 - 当删除不完整的不完整类型的对象时: [ C++ Class forward declaration drawbacks?

最佳答案

#include 永远不会比前向声明更好。在绝对必要时使用#include。 而 #include 只有在需要完整的类型信息时才需要,例如在包含的类头文件中声明类成员或调用成员方法。在以下情况下不需要:

  1. 使用指针/引用作为类成员
  2. 在函数签名中(参数或返回类型)

关于c++ - 查找包含优于前向声明的用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23393443/

相关文章:

java - 使用 Gradle 防止第 3 方库位于编译类路径上

c++ - 如何在 C++ 中获取以下输入

c++ - 如何在不使用临时变量或算术运算的情况下交换两个数字?

c++ - 作为初学者了解 C++ 中的预处理器指令

include - Jekyll:包含_includes外部目录中的文件

c++ - 使用指针隐藏实现(Pimpl 惯用语)

c++ - 调试和预处理器指令

c++ - 如何通过 EGL 创建 OpenGL 3.3 或 4.x 上下文

c - 如何使用 C 中另一个头文件中某个头文件中定义的结构?

dependencies - libstdc++6-armhf-cross 出现未满足的依赖项错误。如何解决?