头文件并包含最佳实践

bou*_*rog 5 c++ header class include

我有一个关于头文件,包含语句和良好编码风格的快速问题.假设我有2个类,包含相关的源文件和头文件,然后是main()所在的最终源文件.

在Foo.hpp中,我有以下声明:

#include <string>
#include <iostream>
#include <exception>
Run Code Online (Sandbox Code Playgroud)

现在有了Bar.hpp我有以下声明:

#include "Foo.hpp"
#include <string>
Run Code Online (Sandbox Code Playgroud)

最后使用Myprogram.cpp我有以下声明:

#include "Bar.hpp"
#include <string>
#include <iostream>
#include <exception>
Run Code Online (Sandbox Code Playgroud)

我知道Myprogram.cpp中的<>中的include语句和Bar.hpp对于程序编译和运行不是必需的,但是最好的做法或正确的做法是什么?有没有理由不在每个文件中明确包含必要的头文件?

Luc*_*ore 11

应该在每个需要它们的文件中包含所有必需的文件.如果MyProgram.cpp需要string,请将其包括在内,而不是依赖于它Bar.hpp.不能保证从现在起2周内Bar.hpp仍然会包含它,然后你将留下编译器错误.

注意必要的 - 即确保你真的需要一个包含,当一个前向声明或甚至完全放弃它时.

另请注意,某些系统标头可能包含其他标头 - 除少数例外情况外,没有要求.因此,如果您需要两者<iostream><string>包含两者,即使您只能使用其中一个进行编译.

包含出现的顺序(系统包括vs用户包括)取决于您遵循的编码标准 - 一致性比选择本身更重要.

  • 但是反之亦然,除非您确实需要头文件(即不要过度包含),否则不应该在头文件中包含头文件。 (2认同)