r34ln00b
Lt. Commander
- Registriert
- Feb. 2006
- Beiträge
- 1.096
Ich kenne mich nicht gut in C++ aus und sicherlich ist meine Frage nicht neu, leider weiß ich nicht nach was genau ich suchen müsste für eine Antwort.
Ich habe eine Klasse, zum Beispiel Element.cpp, welches nur ein "int i" speichert/hält.
Nun habe ich eine weitere Klasse, in der ich mehrere solcher Daten vom Typ Element.
Dabei habe ich Probleme mit dem erzeugen von neuen Objekten mittels "new".
Ich kann mir ein Element "erzeugen" mit
und dann mittels
setzen. Die Größe von elem_1 wird mir mittel "sizeof" mit 48 genannt.
Auch kann ich mir ein Objeckt erzeugen mittels
und den int mit
setzen. Seine Größe ist 48 und damit die selbe wie von elem_1.
Worin unterscheiden sich nun beide Methoden? Von Java bin ich es gewohnt, dass ich keine Datenelemente von Datenobjekten ändern/setzen kann, wenn es nicht ein Objekt gibt und ich dessen Daten ändern kann.
Wie ist es hier bei C++ zu verstehen? Habe ich mit beiden Methoden ein Objekt vorhanden? Wenn ja, inwiefern unterscheiden sich diese? Wozu dann einen Pointer zu einem Datenobjekt erzeugen, wenn ich direkt das Datenobjekt haben könnte (ausgenommen ich möchte später keine Kopie des Datenobjekts übergeben sondern den Pointer)?
Grüße
Ich habe eine Klasse, zum Beispiel Element.cpp, welches nur ein "int i" speichert/hält.
Nun habe ich eine weitere Klasse, in der ich mehrere solcher Daten vom Typ Element.
Dabei habe ich Probleme mit dem erzeugen von neuen Objekten mittels "new".
Ich kann mir ein Element "erzeugen" mit
Code:
Element elem_1;
Code:
elem_1.i = 10;
Auch kann ich mir ein Objeckt erzeugen mittels
Code:
Element* elem_2 = new Element()
Code:
elem_2 -> i = 20
Worin unterscheiden sich nun beide Methoden? Von Java bin ich es gewohnt, dass ich keine Datenelemente von Datenobjekten ändern/setzen kann, wenn es nicht ein Objekt gibt und ich dessen Daten ändern kann.
Wie ist es hier bei C++ zu verstehen? Habe ich mit beiden Methoden ein Objekt vorhanden? Wenn ja, inwiefern unterscheiden sich diese? Wozu dann einen Pointer zu einem Datenobjekt erzeugen, wenn ich direkt das Datenobjekt haben könnte (ausgenommen ich möchte später keine Kopie des Datenobjekts übergeben sondern den Pointer)?
Grüße