Um ein Programm besser handhaben zu können, trennt man in C++ Deklarationen der Klassen von der sogenannten Definition bzw. Implementierung der einzelnen Methoden. Deklarationen kommen in die sogenannten Header-Dateien, der letztendliche Programmtext der Methoden in die C++-Dateien.
In einer Header-Datei steht also nur, was es gibt. In der C++-Datei ist durch konkrete Befehle ausformuliert, wie es ist.
Verwendet (eingebunden)
werden die Header-Dateien durch
eine Präprozessor-Direktive in der C++-Datei, dem
// steht, hier einfügen
// steht, hier einfügen
Vor der
Übersetzung des Programms durch den Compiler werden alle
Dateien durch den Präprozessor gejagt und damit vorkompiliert.
Der Präprozessor fügt anstelle des
Der Befehl
Eine Header-Datei lässt sich in mehrere C++-Dateien einbinden. Damit wird automatisch in all diesen C++-Dateien ein und dieselbe Deklaration verwendet. Die Deklaration stellt also eine gemeinsame Schnittstelle bereit, die für alle betreffenden C++-Dateien gilt. Implementiert wird die Funktionalität hinter der Deklaration nur ein einziges Mal, aber alle können auf die Implementierung über dieselbe Schnittstelle zugreifen.
Durch die Trennung von Deklaration (was gibt es) und Definition (wie sieht es konkret aus) in Header- und C++-Dateien wird der Programmtext in verschiedene Module aufgeteilt. Die Implementierung einer Klasse bleibt so von der Implementierung einer anderen Klasse unabhängig. Ändert sich die Implementierung einer Klasse, aber die Schnittstelle bleibt gleich, müssen nicht große Teile des Programms angepasst und neu übersetzt werden.
Diese Strategie des Versteckens von Informationen ist ein Grundprinzip, das sich durch die gesamte Sprache zieht. Verschiedene Teile eines Programms sollten so unabhängig voneinander wie möglich gehalten werden. Falls notwendig, können auf diese Weise Teile des Programms neu geschrieben werden, ohne dass sich eine kleine Änderung auf viele andere Programmteile auswirken.