将函数放入头文件的经验法则

fut*_*lib 7 c++ header function

最近我开始将越来越多的函数放入头文件中,主要是为了方便起见.但我担心我可能会过度使用它,我的标题充满了包含,我不确定这是不是一个好主意.

将函数移出头文件或将其移入头文件有哪些经验法则?

如果你想知道,我说的是开发应用程序,而不是库.

编辑:

我想从我的角度概述内联(自然)头函数与实现函数的优缺点是有帮助的:

专业内联:

  • 更干净/简洁.
  • 不需要签名重复.
  • 无需更改任何Makefile以链接新文件.
  • 即时启动模板参数的能力.

反对内联:

  • 增加编译时间(我不在乎多)
  • 许多包括在标题中(如果他们使用警卫,不应该是一个大问题)

根据这一点,将几乎所有函数放在头文件中似乎是一个好主意,我相信这与STL和Boost正在做的非常接近(尽管这些是库,而不是我的代码).

pax*_*blo 5

我最不可侵犯的规则之一:只有头文件中允许内联的函数体.在链接阶段,还有其他任何问题需要解决多个定义问题.

标题应该主要用于声明而不是定义.我对该规则有例外(作为灵活类型),但它们都不涉及非内联函数体.