我正在阅读有关使用Qt5(作者Max Schlee)的书,我注意到一些例子已在头文件中声明了现有的Qt类,例如:
class QProgressBar;
所以,我的问题 - 为什么我们只是在我们的头文件中声明QProgressBar
而不包含头文件class QProgressBar;
?
答案 0 :(得分:7)
它不是关于Qt,它是c ++。
它被称为前瞻性声明。
基本上在.h
中您只是说QProgressbar
是一个类,并且不会抱怨它没有被定义。然后在.cpp
文件中放置标题,这样在编译时,编译器就可以很好地定义所有内容。
这可以节省编译时间,因为#include
强制编译器打开更多文件并处理更多输入。
这也可以节省不必要的重新编译。由于标题中的无关更改,#include
可以强制您更频繁地重新编译代码。
当然,对于大型项目,您可能会遇到弊端。
您可以找到更多HERE。