2016-03-11 11 views
6

I Buch lese über die Verwendung von QT5 (Autor Max Schlee), und ich bemerkte, dass einige Beispiele bestehenden Qt-Klasse in der Header-Datei deklariert haben, zum Beispiel wie folgt aus:Deklarieren Qt-Klasse in Header-Datei

class QProgressBar; 

Also, meine Frage – warum wir nicht nur die Header-Datei QProgressBar ohne Deklaration class QProgressBar; in unserer Header-Datei?

+0

Der Hauptgrund dafür, dass Sie dies nicht tun möchten, ist, dass Sie untergeordnete Objekte/Widgets nach Wert verwenden, und dann müssen Sie sowieso relevante Header einschließen - Sie können keine nach vorne deklarierten Klassen verwenden. Die meisten Qt-Beispiele verwenden Zeiger auf untergeordnete Objekte und untergeordnete Widgets mit Verzicht und völlig unnötigerweise ... –

Antwort

7

Es geht nicht um Qt, es ist C++.

Es heißt Vorwärtsdeklaration.

Grundsätzlich in der .h Sie einfach sagen, dass QProgressbar eine Klasse ist und sich nicht über die Tatsache beschweren, dass es nicht definiert ist. Dann in der .cpp Datei Sie den Header, so dass zur Kompilierzeit, der Compiler wird alles gut definiert haben.

Dies kann kompilieren Zeit sparen, wie #include zwingt den Compiler, mehr Dateien zu öffnen und mehr Eingabe verarbeiten.

Dies kann auch unnötige Neukompilierung sparen. #include kann dazu führen, dass Ihr Code häufiger neu kompiliert wird, weil Änderungen im Header nicht zusammenhängen.

Natürlich können Sie bei großen Projekten Nachteile haben.

Sie können mehr HERE finden.