Ich aktualisiere etwas Code und während ich in einem Header arbeitete, stieß ich auf die folgende Zeile.
%Vor%Das ist es. Es ist nur eine Zeile, die einer anderen, längeren Klassendefinition vorausgeht. HereIsMyClass ist in der Tat eine andere Klasse woanders, aber ich verstehe nicht, warum diese Zeile hier geschrieben ist. Was macht es?
Diese Zeile in C ++ ist eine Vorwärtsdeklaration. Es gibt an, dass irgendwann in der Zukunft eine Klasse namens HereIsMyClass existieren wird. Es ermöglicht Ihnen, eine Klasse in einer Deklaration zu verwenden, bevor sie vollständig definiert ist.
Es ist hilfreich, um zirkular abhängige Klassen und Header-Datei-Management aufzubrechen.
Zum Beispiel
%Vor%Es heißt "Vorwärtsdeklaration". Dies teilt dem Compiler mit, dass 'HereIsMyClass' der Name einer Klasse ist (im Gegensatz zum Namen einer Variablen, einer Funktion oder etwas anderem). Die Klasse muss später definiert werden, damit sie verwendet werden kann.
Dies ist nützlich, wenn Sie Klassen haben, die sich aufeinander beziehen müssen.
Hier ist eine Beschreibung.
Dies nennt man eine Voranmeldung . Wahrscheinlich gibt es eine Klassendefinition nach dieser Zeile, die HereIsMyClass verwendet, wenn die eigentliche Deklaration von HereIsMyClass weiter unten in der Datei oder in einem anderen # include weiter unten in der Datei enthalten ist.
Wenn Sie diese Zeile nicht haben, ist es möglich, dass die Datei nicht kompiliert wird.
Dies wird als "Forward-Deklaration" bezeichnet, was im Wesentlichen ein Versprechen ist, diese Klasse später zu definieren. Wenn Sie eine Forward-Deklaration verwenden, können Sie Zeiger auf HereIsMyClass
deklarieren, ohne dafür die Header-Datei einbeziehen zu müssen, aber keine tatsächlichen Objekte, da die Größe eines Objekts von HereIsMyClass
dem Compiler noch unbekannt ist.
Die Forward-Deklaration teilt dem Compiler nichts über die Member der Klasse mit, also müssen Sie immer noch die vollständige Klassendefinition (die Header-Datei) einfügen, wann immer Sie sie tatsächlich verwenden, d. e. Zugriff auf seine Mitglieder.
Tags und Links class c++ definition