多年来,我一直以标准方式编写 C++,在头文件 .hpp 中使用类声明,在源文件 .cpp 文件中使用函数定义。最近我搬到了一家新公司,那里的代码(似乎受 boost 编码风格的影响)完全编码在 .hpp 文件中,其中包含一个简短的 .cpp 文件来包含头文件并创建对象/程序二进制文件。
这让我开始思考 - 在头文件中编写代码而不是为每个对象编写 .hpp 和 .cpp 文件有哪些优势/劣势?这假设我们的项目没有创建公共库然后链接到程序二进制文件,而是每个程序二进制文件都是从头文件(和一个源 .cpp 文件)的总和构建的。这是 C++ 的新趋势吗?
例如,模板对象只需要是头文件,但将非模板类放入头文件中,然后简单地将这些常见的项目类包含在您的二进制文件中似乎是个好主意。假设您正在从头开始创建新的代码库,这是否意味着更少的链接,这可能意味着更少的链接错误和更快的构建速度。预编译的头文件设施是否也意味着使用头文件可以加快构建时间?还是因为我们现在需要在创建二进制文件而不是链接公共共享库对象时编译所有代码,所以构建时间更长?
另请注意,我们不是在这里编写 API(在这种情况下,像 pimpl idiom 之类的东西会通过隐藏实现为我们提供更大的灵活性),我们正在编写在客户站点上运行的程序。
提前致谢,