为什么.hpp文件会包含在.h文件中?

时间:2017-02-17 00:31:18

标签: c++ header definition

我负责实施课程。我收到了一份名为" pro.h"的文件.h我不能以任何方式改变。 .h文件只包含函数原型,没有定义。在类块之后,它有一个

#include "pro.hpp"

我应该创建一个file.hpp来添加定义,但我很困惑,因为定义通常包含在.cpp文件中而不是另一个头文件中。为什么你认为这样做呢?我会将定义格式化为与我在.cpp文件中执行的定义相同,或者重写头文件以包含定义(这看起来效率低下)。

1 个答案:

答案 0 :(得分:1)

您的老师希望您实施模板类。关于模板的事情是它们需要使用正确的模板类型进行实例化,这意味着在知道它将是什么类型之前,您无法创建二进制文件。这就是为什么实现通常写在头文件中。看看f.e. here ......

如果您不熟悉模板,只需询问叔叔google或蚂蚁wiki;)

添加

简单地说......当你在foo.cpp中有东西时,它会被翻译成二进制文件并且相应的标题foo.hpp用作对二进制文件中我可以使用的函数的引用使用我的其他代码。重要的是这个二进制文件不再(真的)改变了。

另一方面,模板无法转换为二进制文件,直到您知道它将在哪种类型上运行...如果您使用int的模板类和另一次使用vector<double>作为模板参数,生成的二进制文件可能非常不同...因此,只有在知道类型后才能将代码编译成二进制文件,因此需要传递代码(在标题内部) )而不仅仅是函数原型...

希望这很清楚。毕竟这是早上差不多3点钟。

如果没有,this应该非常全面。