我是否需要在我的主 cpp 中包含库,即使它已包含在头文件中?

Do I need to include libraries in my main cpp, even if it's been included in a header file?

假设我有一个文件 player.h,在 player.h 中我包含了以下内容:

#include <iostream>
#include <string>
#include <vector>
#include <fstream>

我是否需要在 player.cpp 中再次包含这些,在那里我充实了头文件中声明的函数?如果我不这样做,我是否需要在 运行 main.cpp 中包含它们,这会调用我的各种 .cpp 和 .h 的函数

学校从来没有真正告诉我是否要这样做,所以我总是把所有的东西都包括在内。如果没有必要,多次包含所有内容与不包含所有内容之间是否有明显区别?

包含预处理器指令告诉预处理器用文件的内容替换它。因此当你有

// some_header.h
#include <foo>

// some_source.cpp
#include <some_header.h>

那么如果你编译 source.cpp,编译器在预处理步骤后看到的是这样的:

// some_source.cpp
... contents of foo ...

即:#include <some_header.h>被header的内容替换,#include <foo>foo的内容替换。

不,您不需要两次包含 headers。虽然 headers 应该包括守卫,但它也不会受到伤害。建议是:包括您使用的内容(但不要更多)。