gpt4 book ai didi

c++ - 我应该在 .cpp 和 .h 中重复包含吗?

转载 作者:可可西里 更新时间:2023-11-01 18:09:19 25 4
gpt4 key购买 nike

场景:

foo.h:

#include <vector>

class foo {
public:
std::vector<int>* getVector();

/* ... other methods declarations ... */

}

foo.cpp:

#include "foo.h"
#include <vector>

/* ... other methods definitions using std::vector ... */

std::vector<int>* foo::getVector() {
return new std::vector<int>();
}

我希望 .cpp 独立于 header 中任何 future 可能的更改。如果由于某种原因类的接口(interface)发生变化并且依赖来自 <vector>可以消除,我冒着 .cpp 中的其他方法也会丢失该包含的风险。

重复包含 <vector> 是否正确?在.cpp 和.h 中?这种做法是否有意义,或者我应该只依赖标题中包含的内容?

最佳答案

只包含您需要的内容,仅此而已。

在多个 .h 文件和多个 .cpp 文件中包含相同的头文件本身并不是问题。 header 保护可有效缓解多次包含文件的问题。

如果您开始尝试避免多次包含同一个文件,它实际上可能是负面的,因为它通常会导致“大型包含文件”,其中包含您在整个项目中所需的一切。这很糟糕,因为对任何头文件的一次更改都会导致所有内容重新编译。

如果您担心 .h/.cpp 文件包含同一个文件,请遵循以下准则:

  • 如果头文件中不需要include,只在CPP中包含
  • 如果头文件中需要类声明(但未使用),请在 .h 文件中使用前向声明并将其包含在 CPP 文件中。
  • 如果您实际上在头文件中使用了包含,请将其包含在头文件中而不是 CPP 中。

关于c++ - 我应该在 .cpp 和 .h 中重复包含吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11639809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com