我想知道在包含头文件时应遵循的标准。如果这些地方使用这样的头文件,在相关位置重新包含头文件是一个好习惯吗? 例如,
假设您有一个包含iostream和自定义类“myclass.h”的main.cpp类,因为您在main中使用了std :: ostream和myclass实例。
现在,在你的“myclass.h”中你也包含了iostream,因为在你的班级里你使用了std :: ostream。
如果你现在回顾一下,main在技术上包括iostream两次,因为它本身包含它,它也包含在“myclass”(主要包括)中。 我可以想出有一个很好的理由,有一个不好的理由,我想知道哪种方法可以解决这个问题。
我更倾向于第一个解决方案,但同样,我还不太了解C ++标准。 谢谢, -Francisco
答案 0 :(得分:2)
将包含保留在两个文件中,让包含警卫完成工作。
如果您依赖“间接”包含,如果您以后更改“myclass.h”并且想知道为什么std :: ostream在main.cpp中不再起作用,则可能会出现错误。也可能让其他人感到困惑
答案 1 :(得分:0)
通常,尝试最小化头文件中包含的数量是一种好习惯。每个包括将包含的文件与包含文件耦合。在你使用iostream的情况下,它不是世界末日,因为iostream不会经常改变。您应该检查pImpl习语,它有助于将接口与其实现分离。如果必须在标题中包含文件,则使标题自足。不要求班级用户知道每个班级都需要哪些包含。