我应该将外部标头放在.h文件还是.cpp文件中?

时间:2018-10-13 14:51:05

标签: c++ header-files

假设我有一个在foo.h中定义的函数:

#pragma once 
#include <vector>
#include <string>
void foo(std::vector<std:string> input);

,在实现文件foo.cpp中,我需要使用另一个库(例如std::map)来实现函数foo。

void foo(std::vector<std:string> input){
...
std::map ...
...
}

请注意,声明中不需要std:map,它只是特定于实现的。

我应该将#include <map>放在foo.hfoo.cpp文件中吗?

我知道两种情况下都可以编译代码,我想知道什么是好的做法?

2 个答案:

答案 0 :(得分:4)

将包含内容放入需要的源文件中。

将其放入标头中会不必要地导致标头的所有用户也包括<map>,无论他们是否需要它。

对于琐碎的项目而言,这是无关紧要的,但是对于大型项目而言,这很重要,因为毫无意义的事情包括增加了编译时间并增加了名称冲突的风险。

答案 1 :(得分:3)

保持沉默,仅提供真正需要的东西。

否则,在一个真正的大型项目中,您将得到一堆头文件,每个人都不敢触摸,因为毕竟可能需要它。

此外,它将使项目中的其他所有人也包括地图库,这是不必要的开销(增加了编译时间和/或名称重叠的危险增加了。)