查找include比forward声明更好的用例



我现在正在重新分解我正在处理的c++库(主要是遗留库(,我正在努力最大限度地减少这些包含所产生的include指令和递归依赖关系。此外,为了使前向声明处理简洁明了,我在每个库中都维护了一个fwd.h(就像std中的iosfwd一样(,这使库的客户端的生活更轻松

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

我对课本上的解释不感兴趣,因为提前申报更可取。也许有一点是,向前宣布是令人痛苦的。std、boost或其他成熟库的策略是什么?

注意:我的编译器是intel icc 12-只支持C++03,只有很少的C++11功能,例如enums 的前向声明

ps:我已经进行了类似的讨论,在删除不完整类型的对象时,前向声明似乎比include更糟糕:[C++类正向声明的缺点?

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

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

只有当代码无法编译时!始终使用并在可能的情况下重构代码,以便在#include上使用前向声明。

相关内容

最新更新