在头文件中声明Qt类

zh_*_*zh_ 6 c++ qt forward-declaration qt5

我正在阅读有关使用Qt5(作者Max Schlee)的书,我注意到一些例子已经在头文件中声明了现有的Qt类,例如:

class QProgressBar;
Run Code Online (Sandbox Code Playgroud)

所以,我的问题 - 为什么我们不在头文件中包含头文件QProgressBar而不class QProgressBar;在我们的头文件中声明?

bib*_*ibi 7

这不是关于Qt,它是c ++.

它被称为前向声明.

基本上.h你只是说这QProgressbar是一个类,不要抱怨它没有定义的事实.然后在.cpp文件中放置标题,这样在编译时,编译器就可以很好地定义所有内容.

这可以节省编译时间,因为#include强制编译器打开更多文件并处理更多输入.

这也可以节省不必要的重新编译.#include由于标头中的无关更改,可以强制您更频繁地重新编译代码.

当然,对于大型项目,您可能会遇到弊端.

你可以在这里找到更多.