可能重复:
What is the purpose of forward declaration?
Forward Declaration vs Include
我对头文件和cpp文件中包含的#include *.h
文件有点困惑。我看到一些.h文件包含在头文件中,一些文件包含在相应的cpp文件中。我猜想所有需要的.h文件都需要包含在头文件中,因此看不出它们被包含在cpp文件中的原因。这有什么特别的原因吗?
另外,我发现使用Class ClassName;
在头文件中包含了一些必需的类。这与仅在头文件中包含ClassName.h
有什么不同?
答案 0 :(得分:1)
在你的第一段中你似乎说同一个.h文件包含在类'头文件和类'.cpp文件中?这只是一个疏忽,因为包含一个包含其他文件的文件,根据定义,还包括那些其他文件。您可以删除.cpp文件中的重复包含。
在你的第二段中,你所看到的是一个类的前向声明。如果你不需要在标题中使用类的定义,那么只需向前声明它就是好的做法。这样,包含标头的文件不依赖于类的定义。这减少了文件之间的依赖关系。仅需要前向声明的一个示例是,如果一个类包含一个成员变量,该变量是指向类的指针而不是类本身。