Cruz
No Bullshit
Einen hab ich noch.
Als Java Programmierer kann ich mich mit den Header Files von C++ nur schwer anfreunden. Ich habe noch nicht wirklich begriffen, warum es sie gibt und wie man es am besten macht.
Einserseits höre ich die Aussagen von Freunden, die sagen, dass man im Header nur das public interface einer Klasse definieren sollte. Sie sind dafür da, dass man eine Header Datei + die kompilierte Klasse verteilen kann und man nicht immer Source Code mitgeben muss.
Anderseits sehe ich in Beispielen, dass die Felder einer Klasse im Header deklariert sind und das geht gegen die erste Aussage, denn die Felder selbst gehören bestimmt nicht zum public interface. Aber in diesen Beispielen gibt es gar keine Klassendefinition class Name {} in der cpp Datei, also gäbe es ja gar keine andere Möglichkeit, als die Felder im Header zu definieren. Wie macht man es also richtig?
Und noch eine Detailfrage dazu. In Java pflege ich die primitiven Felder der Klassen direkt bei der ersten Deklaration mit einem default Wert zu initialisieren, damit man nicht jedes Feld auch noch im Konstruktor extra aufführen muss. Kann ich das in C++ auch so handhaben?
Viele Dank
Cruz
Als Java Programmierer kann ich mich mit den Header Files von C++ nur schwer anfreunden. Ich habe noch nicht wirklich begriffen, warum es sie gibt und wie man es am besten macht.
Einserseits höre ich die Aussagen von Freunden, die sagen, dass man im Header nur das public interface einer Klasse definieren sollte. Sie sind dafür da, dass man eine Header Datei + die kompilierte Klasse verteilen kann und man nicht immer Source Code mitgeben muss.
Anderseits sehe ich in Beispielen, dass die Felder einer Klasse im Header deklariert sind und das geht gegen die erste Aussage, denn die Felder selbst gehören bestimmt nicht zum public interface. Aber in diesen Beispielen gibt es gar keine Klassendefinition class Name {} in der cpp Datei, also gäbe es ja gar keine andere Möglichkeit, als die Felder im Header zu definieren. Wie macht man es also richtig?
Und noch eine Detailfrage dazu. In Java pflege ich die primitiven Felder der Klassen direkt bei der ersten Deklaration mit einem default Wert zu initialisieren, damit man nicht jedes Feld auch noch im Konstruktor extra aufführen muss. Kann ich das in C++ auch so handhaben?
Viele Dank
Cruz