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

Why would a .hpp file be included in a .h file?

我的任务是实施 class。我得到了一个名为 "pro.h" 的 .h 文件,我无法以任何方式更改它。 .h 文件只包含函数原型,没有定义。在 class 块之后,它有一个

#include "pro.hpp"

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

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

如果你是模板新手,请教大叔google or ant wiki ;)

添加:

简单地说......当你在 foo.cpp 中有一些东西时,它会被翻译成二进制,相应的 header foo.hpp 用作那里有什么功能的参考在我可以从我的其他代码中使用的二进制文件中。重要的是这个二进制文件不再(真的)改变了。

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

希望这是清楚的。毕竟这里已经是凌晨三点多了。

如果没有,this应该很全面了。