Klasse erzeugen / oder als Zeiger initialisieren
-
myclass MYCLASS oder myclass *MYCLASSMacht das vom Speicherverbrauch her einen Unterschied, dürfte nicht oder? Da im zweiten Fall, die Klasse auch erzeugt wird, oder?
Schönen Abend noch, ich könnte doch das Objekt wie im ersten Fall erzeugen und darauf einen Pointer zeigen lassen.
-
Doch, das kann einen Unterschied machen. Wenn du im zweiten Fall
newverwendest, zahlst du den Preis von einigen Bytes Verwaltungsoverhead für den dynamischen Speicher (plus der Zeiger selbst, aber der ist auf dem Stack). Hier spielt das zwar keine Rolle, aber z.B. bei einer verketteten Liste von kleinen Objekten kann man ganz schön Speicher verschwenden.Trotzdem weiss ich nicht, wozu du das genau wissen musst. Für die Entscheidung zwischen automatischem und dynamischem Speicher sind meist andere Kriterien ausschlaggebender.
-
Das macht einen Unterschied. Du erstellst da 2 verschiedene Objekte. Das erste ist eines vom Typ "myclass" und das zweite vom Typ "Zeiger auf myclass". Die sind sehr wahrscheinlich nicht gleich gross. Allerdings wenn du ein Objekt vom Typ "myclass" dynamisch erstellst (per new), dann wird schon die gleiche Menge an Speicher gebraucht (+den des Zeigers).
Aber solche Überlegungen sind meist nicht zweckdienlich, um sich für eine Variante zu entscheiden. Warum glaubst du also, dass du das wissen musst?
//EDIT:
Too late..
@Nexus. Wiedermal unheimlich, wie ähnlich unsere beiden Beiträge sind. Selbst mit Absatzwahl und Absatzlänge sind wir ziemlich gleich..
-
Eure antworten sind wirklich sehr ähnlich

Ich wollte den Unterschied nur verstehen.Welche Zweckfrage(n) sollte man sich den diesbezüglich stellen?

-
Grundsätzlich kannst du mal davon ausgehen, dass die erste Variante die "bessere" ist. Ein automatisches Objekt wird automatisch wieder aufgeräumt und du musst dich nicht darum kümmern.
Wenn du allerdings ein Objekt haben willst, welches länger als der aktuelle Scope lebt, dann kommst du um eine dynamische Variante kaum herum (gleiches gilt für Fälle, wo du z.B dynamisches Wachstum o.ä. haben willst).Falls du aber wirklich nur einen Zeiger halten willst, dann ist das natürlich wieder was anderes (wenn die Objekt von irgendwo anderst kommen). Referenzen wären dann aber ebenfalls ein Thema, welches du in Betracht ziehen solltest.
-
drakon schrieb:
Grundsätzlich kannst du mal davon ausgehen, dass die erste Variante die "bessere" ist. Ein automatisches Objekt wird automatisch wieder aufgeräumt und du musst dich nicht darum kümmern.
Wenn du allerdings ein Objekt haben willst, welches länger als der aktuelle Scope lebt, dann kommst du um eine dynamische Variante kaum herum (gleiches gilt für Fälle, wo du z.B dynamisches Wachstum o.ä. haben willst).Falls du aber wirklich nur einen Zeiger halten willst, dann ist das natürlich wieder was anderes (wenn die Objekt von irgendwo anderst kommen). Referenzen wären dann aber ebenfalls ein Thema, welches du in Betracht ziehen solltest.
Vielen Dank, du hast Licht in die Dunkelheit gebracht ^^