Um eine Klasse zu instanzieren gibt es zwei Möglichkeiten:
oder
Im ersten Fall (Referenz) kümmert sich der Compiler darum den Speicher an der richtigen Stelle freizugeben. Im zweiten muss ich selber mit "delete" den Speicher freigeben. Zumindest habe ich das so verstanden.
Was aber nun wenn ich sauber und ohne Nachteile/Nebeneffekte vom einen in das andere wandeln will, bzw. aus einer Funktion ggf. beide "Gebiete" bedienen kann?
Wenn meine Funktion einen Pointer (erzeugt mit new) zurückgibt, dann bekomme ich daraus zwar wieder eine Klassen-Referenz, wenn man aber dieser Antwort glauben darf, dann ist das eine Kopie. Ich muss mich also doch noch darum kümmern den ursprünglichen Pointer wieder freizugeben:
http://stackoverflow.com/quest…rence-new-pointer#tab-top
Die Idee ist aber den ursprünglichen Pointer eben nicht mehr zu brauchen. Ich will ja ohne Nebeneffekte von der "einen Welt" (erzeugt als Pointer) in die andere (erzeugt als Referenz) umwandeln.
Was ist mit dem umgekehrten Weg? Was, wenn ich einen Pointer auf eine Klassen-Referenz mit "&" erzeuge? Bekomme ich so das gleiche als hätte ich "new" genutzt? Soll heißen: Bleibt die Klasseninstanz dann so lange stehen bis ich meinen Pointer mit "delete" wegräume? Oder bekomme ich wieder eine Kopie?
Kann hier irgendwer helfen und ggf. auch einen Link liefern wo das mal etwas einfacher beschrieben wird?