0

Possible Duplicate:
In C++ why have header files and cpp files?
C++ - What should go into an .h file?

All the functions/methods which are usually defined in .cpp file can be defined inline in .h file. So what is the reason for using .cpp at all? Effectivity? Compilation time?

Are there some standards as what can be kept in .h and what should go to .cpp?

Thank you.

4

3 回答 3

3

相关

这个问题那个

好吧,基本上编译器能够编译所有文件,无论您将所有代码放在 .h 或 .cpp 文件中。将它们分开有基本的优点

  1. 简而言之,您希望将接口与实现分开以实现可见性和可重用性。
  2. 它减少了编译时间
  3. 当您使用 3dparty 库的头文件时,您真的不关心它的实现,而是关心要调用的函数签名
  4. 当您将自己的库作为 util 库提供时,您只想提供头文件供人们使用,并为想要开发您的库的人提供源库 这个列表可以走得更远,但这就是结果我现在的想法
于 2012-09-20T12:36:01.350 回答
2
  • 减少编译时间。如果定义都在头文件中,则每次该头文件更改时,都需要对包含该头文件的所有文件进行编译。
  • 从实现中隐藏接口。允许发送标头和库。
于 2012-09-20T12:35:49.867 回答
2

你不能内联所有东西。对象可以定义一次且仅一次。只有类和模板可以定义多次,内联只允许重新定义函数

例如,考虑header.hpp:

extern int a;

struct Foo { static int b; };

以下内容必须进入专用的单个翻译单元:

#include "header.hpp"

int a;
int Foo::b;

另一方面,类模板的静态成员可以而且必须确实保留在标题中:

template <typename T> struct Foo { static int x; };
template <typename T> int Foo<T>::x;

链接器必须弄清楚如何使对象唯一化。

于 2012-09-20T12:37:14.757 回答