我想知道在包含头文件时应该遵循什么标准。如果这些地方使用此类头文件,那么在相关位置重新包含头文件是否是一种好习惯?例如,
假设您有一个包含 iostream 的 main.cpp 类和一个自定义类“myclass.h”,因为您在 main 中同时使用了 std::ostream 和 myclass 的实例。
现在,在您的“myclass.h”中,您还包括 iostream,因为在您的类中您使用 std::ostream。
如果现在回头看,main 在技术上是两次包含 iostream,因为它本身包含它,并且它也包含在“myclass”(其中 main 包含)中。我可以想到一个很好的理由和一个不好的理由,我想知道哪种方法是正确的。
- 保留两个包含并让包含守卫完成他们的工作。如果您更改了“myclass”中的实现并删除了 iostream 包含,您的 main 不会中断,因为它明确包含 iostream。
- 只保留“myclass”中的包含并将其从 main 中删除,以便拥有单个 iostream 包含(并缩短编译时间?),修复在“myclass”中更改实现时出现的任何错误并删除 iostream当他们出现时包括在内。
我更倾向于第一个解决方案,但同样,我还不太了解 C++ 标准。谢谢,-弗朗西斯科