我有一个类Foo与相应的.h和.cpp。这两个文件都使用std :: string。我应该只在标题中包含#include <string>
还是将它包含在两个文件中?在类头和实现中包含头文件?
3
A
回答
6
如果标头可以脱离前向声明,那么我总是在标头中使用它,并在实现文件中使用#include。 (FD可以用作参考和指针类型)。
如果他们都需要它,那么我倾向于将它们放在两个位置,这样如果标题被更改,我可以将它从.h中删除。
0
如果你可以更好地使用前向声明,因为你避免了多重包含,循环包含等。 所以当你可以使用一个指针时,把一个前向声明然后包含在所有其他文件中.cpp 你不得不直接包含在.h中(当你不使用指针或引用时,以及从类中派生时)
2
我将<string>
包含到预编译头中,因为我不打算经常更改它:) 。主要规则是:所有我不会经常更改的头文件都包含在预编译头文件中:STD,系统头文件,稳定的第三方库等(“经常”取决于项目大小,如果项目很大,“往往”倾向于“决不”)。
其他标题我投票了@111111's answer
相关问题
- 1. 在C++中包含头文件(类定义和方法实现)
- 2. C++头文件和实现文件:包含什么?
- 3. 包含在头文件中
- 4. 在附加头文件中包含头文件包括路径
- 5. 包含头文件
- 6. 当没有实现文件时包含头文件?
- 7. 在另一个头文件中包含头文件
- 8. 类头+实现
- 9. 如何在头文件中包含依赖项而不将其包含在包含头文件的项目中
- 10. 关键字包含在头文件vs源/实现文件中的C++“规则”
- 11. 在cygwin中包含头文件
- 12. 在VS2005中包含头文件
- 13. 外部头文件包含在C++中
- 14. C++包含头文件
- 15. 不能包含头文件
- 16. C++头文件包含
- 17. 包含Linux头文件
- 18. 头文件包含路径
- 19. 不能包含头文件?
- 20. 头文件和包含最佳做法
- 21. 为什么包含头文件而不是实现?
- 22. 为什么头文件包含完整的代码实现?
- 23. 为什么Qt在头文件中包含现有类的空类定义?
- 24. 的.h文件包含在头文件和cpp文件
- 25. 在头文件中包含头文件并不会将它包含在实现文件中 - 或者我只是使用错误的命令进行编译?
- 26. 实现与头文件
- 27. Objective C头文件实现
- 28. 不能包含在CPP文件头
- 29. C头文件中的包含循环
- 30. 模板中包含头文件。
感谢您的补充。对此,我真的非常感激。 – flumpb 2012-03-02 14:51:51