2016-03-11 53 views
6

czytam książkę o używaniu Qt5 (autor Max Schlee) i zauważyłem, że niektóre przykłady zadeklarowały istniejącej klasy Qt w pliku nagłówka, na przykład tak:Deklarowanie klasy Qt w pliku nagłówkowym

class QProgressBar; 

Tak więc, moje pytanie: – dlaczego po prostu nie dołączamy pliku nagłówkowego QProgressBar bez zadeklarowania class QProgressBar; w naszym pliku nagłówkowym?

+0

Głównym powodem, dla którego nie chcesz tego zrobić, jest to, że powinieneś używać obiektów podrzędnych/widgetów według wartości, a następnie musisz uwzględnić odpowiednie nagłówki - nie możesz używać klas deklarowanych przez użytkownika. Większość przykładów Qt używa wskaźników do obiektów potomnych i widżetów potomnych z porzuceniem i zupełnie niepotrzebnie ... –

Odpowiedz

7

Nie chodzi o Qt, to C++.

Jest to tak zwana deklaracja terminowa.

W zasadzie w .h po prostu mówisz, że QProgressbar to klasa i nie narzekaj na fakt, że nie jest ona zdefiniowana. Następnie w pliku .cpp umieszczasz nagłówek, aby w czasie kompilacji kompilator miał wszystko dobrze zdefiniowane.

To może zaoszczędzić czas kompilacji, ponieważ #include wymusza kompilację, aby otworzyć więcej plików i przetwarzać więcej danych wejściowych.

Może to również zaoszczędzić na niepotrzebnej rekompilacji. #include może wymusić rekompilację kodu częściej, z powodu niepowiązanych zmian w nagłówku.

Oczywiście przy dużych projektach możesz mieć wady.

Możesz znaleźć więcej HERE.