【发布时间】:2012-02-27 15:38:20
【问题描述】:
在当地一所大学辅导了几名学生后,有人问我“与常规 .cpp 文件相比,什么时候最好在 C++ 中使用头文件?”。我有点纠结于答案,想看看是否有一个更明确的答案,说明在哪种情况下什么是最好的。
在使用可在多个项目中使用的代码时,最好使用头文件吗?我知道这是一个愚蠢的例子,但是如果您制作了可以在其他项目中反复使用的自定义数学函数;那最好放在头文件中对吗?
【问题讨论】:
在当地一所大学辅导了几名学生后,有人问我“与常规 .cpp 文件相比,什么时候最好在 C++ 中使用头文件?”。我有点纠结于答案,想看看是否有一个更明确的答案,说明在哪种情况下什么是最好的。
在使用可在多个项目中使用的代码时,最好使用头文件吗?我知道这是一个愚蠢的例子,但是如果您制作了可以在其他项目中反复使用的自定义数学函数;那最好放在头文件中对吗?
【问题讨论】:
需要从多个.cpp 文件中访问的任何内容都应在头文件中声明,并且头文件应在每个相关的.cpp 文件中为#included。
例如,这可以包括全局变量、全局函数、类等的声明。
【讨论】:
头文件可以更好地重用已开发的代码(即函数或类)。事实上,始终为您定义的每个类定义一个 .h 和 cpp 文件是一种标准做法。 第二个问题的答案是肯定的,如果您想在项目中重用自定义函数,您可以在 .h 文件中定义其签名,并在 .cpp 文件或已编译的 dll/lib 中定义其实际实现
【讨论】:
如果一个函数、一个类或一个宏或其他东西需要可重用(它可能从许多不同的文件中访问),那么一个好方法是将它放在头文件中并让其他文件包含那个文件。
【讨论】:
头部定义接口;源文件提供了 执行。除了琐碎简单的测试程序,你 通常从头开始——并且只写实现 一旦标题完成。在实践中,您可能会返回并修改 标头;例如将私有成员添加到类中。但目标是 在尝试实施之前正确定义您需要实施的内容 它,这就是头部的作用。
另一个常见的策略是将低级文档放在 标题也是如此。在这种情况下,在编写标题时,您将从 写一个类将做什么的描述——它的角色和它的 尤其是在编写任何实际的 C++ 之前的职责 代码。
【讨论】:
在 C++ 中,头文件用于声明,而在大多数情况下,源文件用于定义。
如果你需要在多个文件中使用一个类,你需要为每个文件提供类声明,在这种情况下最好使用头文件,否则如果你使用源文件,你最终会得到多个定义最重要的是,可执行文件的大小会增加。
一般来说,为每个类或有时为一组相关类使用头文件是一种很好的做法。
【讨论】: