我正在VS 2005上编译C ++。
何时以及为何使用#include
以及何时以及为何使用pre-decleration作为class XXXX
?
使用每个选项有什么好处,哪个选项优先?
我也很高兴有一个关于编译的好教程。
答案 0 :(得分:3)
始终倾向于前瞻性声明。对引用的类文件的更改不会触发使用预先声明的类重新编译包括该类的cpp文件。这减少了依赖性。
在您有效使用XXXX类的每个地方,您都必须包含该标题。如果您从XXXX类派生,则还必须包含标题。
答案 1 :(得分:1)
头文件用于包含在单独的编译单元中定义的实体的声明。如果你没有头文件,你必须在每个编译单元中输入这样的声明(这基本上是#include为你做的,它在文件中的那一点插入包含的文本,但是如果你没有使用标题,您必须多次执行此操作,并且在代码更改时容易出错并且难以维护。
您可以直接在.cpp文件中使用声明,例如,如果定义的符号仅在该编译单元中使用,因此不需要全局可见性。在数据声明的情况下,您通常也将它们声明为静态,以使它们的范围仅限于编译单元。