Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#3

AW: [Tutorial] Den Destruktor verstehen

  Alt 15. Apr 2012, 09:22
Zitat:
Warum braucht man überhaupt das inherited im Destruktor? Könnte Delphi das nicht automatisch aufrufen? ...
Und was währe, wenn ich was überschreiben will, ohne daß die Vorfahrmethoden ausgeführt werden?
Beim Destruktor ist das verboten! Die Kette der Destruktoren muss abgearbeitet werden; sie darf nicht unterbrochen werden. Falls doch, droht ein Resourcen-/Speicherleck.
Eine abgeleitete Klasse kann und darf nicht wissen, was in den Basisklassen über ihr freigegeben wird.

Und außerdem kann man über das Inherited entscheiden wann der Vorfahr ausgeführt wird. (zu Anfang, zwischendrin, am Ende oder garnicht)
Resourcen (Speicher, Handles,...) sollten immer in umgekehrter Weise freigegeben werden, in der sie angefordert wurden; das ist der sicherste Weg.
Die Freiheit in Delphi zuerst die ererbten Resourcen freigeben zu können und dann erst die eigenen Resourcen freizugeben sollte die absolute Ausnahme bleiben.
Ein Destruktor, der kein inherited aufruft, muss als potentielles Resourcen-/Speicherleck betrachtet werden.
Der Compiler sollte dies als Fehler betrachten oder zumindest eine Warnung ausgeben.

Jetzt fehlt nur noch der Constructor. ...Class Constructor ...Class Destructor
Ich habe das Thema mit Absicht auf den Destruktor beschränkt; das erzeugt schon genügend Diskussionsstoff
  Mit Zitat antworten Zitat