C++ Sinn von Headerdateien? Suche Beispiel

Zeboo

Lt. Commander
Registriert
Juli 2008
Beiträge
1.562
Hallo,

wenn ich mit C++ arbeite, schreibe ich normalerweise nur .cpp Dateien. Da kommt alles rein und gut ist. Jetzt wurde mir gesagt ich solle auch mit Headerdateien arbeiten.

Was ist daran jetzt sinnvoll? Bzw. was soll da alles rein kommen? Warum kann ich nicht nur mit .cpp Dateien weiterarbeiten? Unter Java kannte ich das auch nur, dass ich mehrere Klassen gemacht habe, höchstens mal paar Interfaces und gut war es. Deswegen ist das mit dem Headerdatei etwas seltsam.

Hat jemand ein Beispiel bzw. Erklärung?

Ich müsste auch erstmal glaube ich lernen wie ich die .h und .cpp Datei richtig zusammen kompiliere...

Gruß
 
schon mal was von modulare Programmierung gehört?

mit einem Header kannst du andere Klasse einbinden
 
eigentlich jede aktuelle Programmiersprache und auch sehr viele ältere unterstützen das.
Im Prinzip gibt's da viele Verwendungsmöglichkeiten:
Nehmen wir mal an du schreibst ein komplettes Game in C++, willst du das wirklich in einer Datei machen? Ich denke, das wird unübersichtlich. Also trennst du es in Sinngemäße Abschnitte und packst jeden in eine Datei.
ok ok ok, ich weiß, dass ist nicht gerade das "Header"-Prinzip. Dazu nun aber:
Stell dir vor du schreibst ein Programm (das schon aus mehreren Dateien besteht, da es groß ist und man den Überblick nicht verlieren will) und musst in jedem dieser Teile immer wieder die Funktion zum einlesen, manipulieren und ausgeben eines Bildes nutzen (diese Funktion hast du natürlich selbst geschrieben) , entweder du kopierst nun jedes Mal den Code wieder und wieder in die einzelnen Dateien ODER ABER: du steckst ihn in eine "Header"-Datei und bindest sie ganz oben in deinen Codes ein, eine kurze Zeile. Hilft bei der Übersicht und außerdem sparst du dir Redundanzen im Code (spart Speicher).
Andere Möglichkeit dafür ist es z.B. , wenn du eine Datei hast die quasi alle Einstellungen beinhaltet, die immer überall gleich sein müssen. Entweder du kopierst die Einstellungen jedesmal wieder und wieder in die Dateien und dann kommt der große Schock: Du willst da ne Kleinigkeit ändern und dann musst du jede Datei öffnen und es überall korrigieren ODER ABER: du nimmst EINE Datei, steckst da alle Einstellungen rein und fügst sie per include ein (oder wie auch immer das in c++ heißt). Dann änderst du nur noch diese eine Datei und alles läuft wie gewollt -> weniger Arbeit, mehr übersicht, weniger Fehlerquellen!
 
1.) Wenn man nur kleine Programme schreibt, dann ist das ziemlich mühsam, wenn man alles in eine Datei stopft, weil man dann sich absolut nicht mehr zurecht findet und nur mehr rauf- und runter scrollt. Hat man jede Klasse in einer Datei, dann kann man schnell hin- und her springen. Ich würde jetzt nicht jeden 3 Zeiler in eine eigene Datei stopfen, aber ich sage einmal wenn du zwei Klassen mit über 100-200 Zeilen hast, würde ich schon einmal darüber nachdenken, diese zu trennen.

2.) Header Dateien braucht man in C/C++ weil das eine realtiv dämliche Sprache ist. Der Compiler geht hier alles nur zeilenweise durch. Verwendest du eine Funktion schon weiter oben, als dort, wo du sie deklariert hast, baut der Compiler einen Fehler. In modernen Programmiersprachen ist das kein Problem (z.B. Java). Deshalb musst du in C immer Prototypen deiner Funktionen am Anfang jeder Datei schreiben.
Das Include ist auch relativ einfach. Das kopiert einfach nur den Block aus einer gewissen Datei oben hin ins Sourcefile. Jetzt hast du bei mehreren Dateien das Problem, dass du ein und dasselbe File eventuell mehrfach über mehrere Ebenen eingebunden hast. Wenn du das mit einem Header File machst, dann ist das ganze halb so wild. Bei einem .cpp File micht echtem Code findet er dieselbe Funktion dann zweimal und der C Compiler weiß nicht, dass das in Wirklichkeit eh die selbe Funktion ist und wirft einen Error, dass man die Funktion zwei mal deklariert hat.
 
Zurück
Oben