*.hh und *.cc
-
Wieso wird der Code von zum Beispiel einer Klasse eigentlich auf eine *.hh-Datei (Headerdatei) und eine *.cc-Datei aufgeteilt? Von der praktischen Sicht, könnte man ja alles in eine Datei schreiben. Debuggen wäre einfacher da ich nicht die Methoden bezüglich ihrer Definition jedes Mal in beiden Files verändern muss. Was meint Ihr?
-
Hallo
ist eben die Kapselung.
Beispiel für Trennung : Zusammenfassung von Bibliothelen zu einer LIB/DLL. Dann gibst du nicht den gesamten Quellcode weiter, sondern nur den Header. Und der User kann nur die Definitionen sehen, nicht die Implementationen.bis bald
akari
-
Hat noch mehr Vorteile.
Macht man eine kleine Änderung im Header, muss nicht die gesamte Implementation neu kompiliert werden.
mfg
-
der sinn is vorallem die trennung zwischen implementierung und definition
@alus du "darfst" es auch alles in eine cpp datei schreiben
aufteilen in cpp und h musst du es nur wenn:
-eine andere klasse/funktion die klasse benutzen will
-im falle einer dll... falls jemand von aussen die klasse benutzen willin beiden fällen muss an der stelle an der die klasse benutzt wird ihre definition, d.h. der teil im header bekannt sein
die implementierung in der cpp is in beiden fällen uninteressant
-
alus schrieb:
Wieso wird der Code von zum Beispiel einer Klasse eigentlich auf eine *.hh-Datei (Headerdatei) und eine *.cc-Datei aufgeteilt?
naja, sagen wir mal eine *.h und eine *.cpp, um realistisch zu bleiben.
Von der praktischen Sicht, könnte man ja alles in eine Datei schreiben.
exakt.
Debuggen wäre einfacher da ich nicht die Methoden bezüglich ihrer Definition jedes Mal in beiden Files verändern muss.
exakt. deswegen sollste auch alles in eine *.h schreiben. um genau zu sein, sollste die klasse, die du gerade baust, einfach in die main.cpp über die main() schreiben. wenn sie einigermaßen stabil ist, verschieb sie in eine Klasse.h und inkludiere sie. und bau dann an der nächsten klasse rum, die wieder ihr kinderzimmer in der main.cpp hat. die klassem, die schon eigene *.h haben, werden mit der zeit alt und alter. wenn sie, sagen wir mal, keine teenager mehr sind, nicht mehr jede woche eine neue methode haben wollen oder eine loswerden wollen, dann dafste ihnen ein haus bauen und sie in eine *.cpp stecken.
das compilieren wird schneller, zum teil ganz erheblich schnbeller, wenn die klassen in eigenen *.cpp wohnen. mußt dann noch darauf achten, daß die *.h so wenig wie möglich inkludiert. unter anderem nie die <iostream>. es reicht, die <iostream> in der *.cpp zu inkludieren.
-
Danke für die Kommentare und praktischen Hinweise - werden sicher das Leben im Umgang mit Klassen vereinfachen!