Fachgemäßes Erstellen und Zerstören von Objekten
-
Hallo zusammen,
ich frage mich gerade, wie das mit dem Erstellen und Zerstören von Objekten so aussieht.
1. Erstellen:
Da gibts offensichtlich mehrere Wege und im Moment komme ich hiermit voran (vehicle ist meine Klasse):vehicle tempv(3,4,5);So weit so gut, es gibt aber wohl auch noch eine Möglichkeit mit dem Schlüsselwort new... Aus VB kenne ich das so:
Dim V as vehicle Set V = New VehicleUnd anders funktionierte das bei VB glaube ich auch gar nicht. Reicht mein C++-Code oben aus oder fehlt mir auch noch eine Zeile mit "new"?
2. Zerstören:
Da gibt es wohl was mit "delete", aber das habe ich bis jetzt nur in Verbindung mit "new" gesehen und kann mir da keinen Reim drauf machen. Und dann war da noch was mit ->NULL aber ich bin mir nicht sicher... Also dazu die Fragen:
2.1 Wie zerstört man eine Instanz fachgemäß?
2.2 Ist das Zerstören notwenig, wenn z.B. eine temporäre Instanz nur immer in einer Funktion(z.B. zum hinzufügen zu einem std::vektor) aufgerufen wird?Gruß
Dr. Bernd
-
In C++ kannst du deine Objekte entweder auf dem Stack (bzw. global) anlegen oder auf dem Heap.
Stack-Objekte legst du mit "vehicle v(2,3,4);" an - die werden automatisch zerstört, wenn sie außer Scope fallen (d.h. am Ende des {...}-Blocks, in dem sie definiert wurden).
Heap-Objekte legst du mit "vehicle* pv = new vehicle(2,3,4);" an und kannst sie dann herumreichen - die werden manuell mit "delete pv;" wieder entsorgt, wenn du sie nicht mehr brauchst. (auf NULL setzen mußt du den Pointer nur, wenn du ihn anschließend noch auf Gültigkeit prüfen willst)
-
Hier ein Infotext zu der Thematik:
http://www.kharchi.de/cppratgeber1.htm
-
Hey, danke euch beiden!
Denn bleibe ich erstmal beim Stack, meinetwegen darf mein vector auch auf dem Heap rumspielen, aber ich lass die Zeiger erstmal noch sein.