包括已知的已知文件

时间:2014-11-30 00:40:01

标签: c++ c header include convention

包含您知道的文件已被其他包含的文件包含在内的惯例是什么?

实施例: Class Base在“base.h”中声明,并且有一些子类。 Base有一个虚拟方法foo(Bar& bar),因此包含“bar.h”。从适当的惯例角度来看,我们是否应该在子类中包含“bar.h”,因为子类包含“base.h”,其中包括“bar.h”?

2 个答案:

答案 0 :(得分:1)

鉴于函数声明只需要声明参数,您需要包含相应的标题。对于已知的基类或非private数据成员类型,需要包含定义。由于其他所有内容要么只需要声明,要么是实现细节,因此您不应该依赖包含的间接标头。

答案 1 :(得分:1)

有一种观点认为,在child.h中包含base.h和bar.h都比较好。即使这是一个虚函数依赖,包括bar.h将未来的开发人员(可能没有IDE)指向声明而不必读取base.h。

对于非虚函数,包括两者都应该更好imho,因为另一个开发人员可以更改base.h的内容,而不必担心child.h对bar.h的依赖。