3

可能重复:
前向声明的目的是什么?
前向声明与包含

#include *.h对头文件和 cpp 文件中包含的文件有点困惑。我看到一些 .h 文件包含在头文件中,一些包含在相应的 cpp 文件中。我猜想所有需要的 .h 文件都需要包含在头文件中,因此看不到将它们包含在 cpp 文件中的原因。这有什么具体原因吗?

另外,我看到一些需要的类已经包含在头文件中,使用Class ClassName;. 这与仅包含ClassName.h在头文件中有何不同?

4

1 回答 1

2

在您的第一段中,您似乎说相同的 .h 文件包含在类的头文件和类的 .cpp 文件中?这只是一个疏忽,因为根据定义,包含一个包含其他文件的文件也包括那些其他文件。您可以删除 .cpp 文件中的重复包含。

在您的第二段中,您看到的是一个类的前向声明。如果您不需要在标头中定义类的定义,有时最好只转发声明它。这样,包含标头的文件不依赖于类的定义。这减少了文件之间的依赖关系。只需要前向声明的一个例子是,如果一个类包含一个成员变量,它是一个指向类的指针,而不是类本身。

于 2012-08-09T02:03:05.373 回答