在header或cpp中包含std库?

use*_*652 19 c++ header-files

如果我有一个使用iostream的A类,我应该把iostream的include语句放在Ah或A.cpp中吗?

Jer*_*fin 26

这是一个有争议的领域.我自己的偏好是每个标题应该能够独立,所以如果它需要其他标题,它包括它们.换句话说,如果客户端代码<iostream>无论如何都需要包含(或其他),那么您的标题应该为它们处理.OTOH,如果iostream的用户被严格隐藏,因此客户端代码根本不需要包含它,那么它应该只包含在实现文件中.

在许多情况下(特别是在标题对频繁更改开放的情况下),您宁愿避免将其包含在标题中.在这种情况下,PImpl习惯用法可以用于从头部获取依赖性.

如果您确实需要包含<iostream>,请帮助您的客户,并考虑您是否可以#include <iosfwd>代替<iostream>.这可以大大改善编译时间.

  • 哦,不要让你保持在99998代表.也许,你可以自己动听一个答案吗?:)(开玩笑+1) (4认同)
  • Re*我自己的偏好是每个标题应该能够独立,所以如果它需要其他标题,它包含它们.*是的,但标题不应该"#include"一个罗马大小的澡堂(`<iostream> `)当它只需要一个小小的洗脸盆(`<iosfwd>`). (2认同)