我的标题中是否需要我的#include指令?

Koo*_*rus -1 c c++ header include

我是否需要在源文件中包含的标题中包含所有内容?例如,我有一个名为source.cpp的文件,它以:

#include <string>
#include <vector>
#include <cctype>
Run Code Online (Sandbox Code Playgroud)

然后我有一个名为source.hpp的标题,它只包含字符串.编译得很好,但这是不好的做法,还是会导致将来出现并发症?

Sam*_*tep 6

源文件需要的一些头文件可能只是用于实现细节,所以不,它们也不需要#include在头文件中.

我遵循的规则是:#include只在头文件中,然后在源文件中,#include头文件包含的所有文件,以及实现细节的其他所需头文件中绝对需要的内容.

如果有人想知道,我将所有#include指令从头文件复制到源文件中的原因是,如果我稍后用头向声明替换头中的那些指令之一,我的源文件根本不需要改变.