标题背后的理由是什么?

RCI*_*CIX 6 c c++ header principles

我不太明白有一个标题; 它似乎违反了DRY原则!标题中的所有信息都(可以)包含在实现中.

Ste*_*owe 20

它简化了编译过程.当您想要独立编译单元时,您需要一些东西来描述将链接到的部分,而无需导入所有其他文件的全部内容.

它还允许代码隐藏.可以分发标头以允许其他人使用该功能而无需分发实现.

最后,它可以鼓励界面与实现的分离.

它们不是解决这些问题的唯一方法,但30年前它们是一个很好的问题.我们今天可能不会使用头文件作为语言,但它们不是在2009年发明的.

  • 您提供已编译的库代码+标头. (11认同)
  • @RCIX,他们没有.并非在所有情况下.DLL可以按名称导出某些函数,这可以查询.某些DLL包含实现IDispatch的COM接口,其中包含类型库信息,可以查询.然而,不能以某种方式导出的原始C/C++函数不能(据我所知)很容易地进行探索. (4认同)
  • 遗憾的是,标题不会将接口与实现分开(您的类仍然必须在标头中列出私有成员变量).但你的第一段是正确的.这就是发明标题的原因.不方便,这是必要的. (2认同)