我是否还应该包含string.h(即使它存在于头文件中)?

时间:2019-04-10 10:18:05

标签: c++

我无法理解在cpp中制作类的过程。

如果在头文件中包含字符串,我是否还必须在实现头文件的cpp文件中包括相同的头文件?

2 个答案:

答案 0 :(得分:2)

如果您使用标头中的声明或定义,则必须包含该标头。包含标头确实会过渡性地包含该标头包含的所有标头。

您绝不能依赖不受您自己控制的标头(即标准标头或库标头)中的传递包含,因为这些包含可以在不同版本之间发生变化。除非正确地记录了文档,否则也要依靠自己的标头的传递包含,这是一个糟糕的设计,因为这种依赖会产生不可见的依赖关系。


PS。不推荐使用<string.h>头,而推荐使用<cstring>头。

PPS。 <string.h>未定义std::string。在标题<string>中。

答案 1 :(得分:1)

否,如果cpp文件包含头文件,则无需再次包含它。不过,即使这样做,也不会造成任何伤害,因为Include guard