c++ - 如果我需要在我的 header 中包含另一个 header 并且我计划在我的 CPP 文件中使用它,我是否也应该将它包含在那里以提高可读性?

标签 c++

好的,所以我会尽力解释我的问题。基本上在我的一个头文件中我需要使用一个类,显然要做到这一点我必须在当前的头文件中包含该类的头文件。我只是在想,既然我打算稍后创建此类的新实例,我是否也应该将它包含在 .cpp 文件中以帮助提高可读性?我知道我不必这样做,但这样做有意义吗?还是我只是疯了?

例子A,头文件:

include "APIManager.h"
class Environment
{
public:
    static void Initialize();
private:
    APIManager apiManager;
};

例子A,源文件:

include "Environment.h"
// Should I include "APIManager.h" here too?
void Environment::Initialize()
{

}

试着在这里四处寻找它,但我不确定如何表达它,如果有人问过这个问题,我们深表歉意。

此外,一般来说,您应该在类的头文件中包含类源代码所需的头文件吗?谢谢。

最佳答案

如果源文件是 Environment.cpp,您在其中实现您在 Environment.h 中声明的内容,那么不,您不应该重新包含它。

另一方面,如果源文件是 SomeOtherFile.cpp,您只是在其中使用 Environment.h 中的声明,并且您将单独使用 APIManager.h 中的声明,并且独立于它们作为 Environment 的一部分的用法.h,那么是的,你应该。您不希望将来的更改删除 #include <Environment.h>从 SomeOtherFile.cpp 意外破坏它。

换句话说,如果 SomeOtherFile.cpp 直接依赖于 APIManager.h,那么这种依赖应该直接通过 #include 表达。

关于c++ - 如果我需要在我的 header 中包含另一个 header 并且我计划在我的 CPP 文件中使用它,我是否也应该将它包含在那里以提高可读性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38620063/

相关文章:

c++ - 如果基类有/没有附加虚拟方法,为什么非虚拟方法(从派生类调用时)的行为会发生变化?

c++ - Memcpy 二维 vector

c++ - 使 -std=c++11 成为 mac 终端的默认值

c++ - 动态内存和 "ordinary"内存的区别

c++ - 使用 BOOST_FOREACH 遍历目录中的所有文件

c++ - 优化编译器如何决定何时以及展开多少循环?

c++ - "position"是 C++ 中的保留字吗?

c++ - 为同一对象管理多个流运算符(operator<<, >>)

c++ - 使用 QtCreator 设置 GDB

c++ - C++中如何不调用构造函数就创建对象?