AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials [Tutorial] Den Destruktor verstehen
Tutorial durchsuchen
Ansicht
Themen-Optionen

[Tutorial] Den Destruktor verstehen

Ein Tutorial von sx2008 · begonnen am 15. Apr 2012 · letzter Beitrag vom 20. Apr 2012
 
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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz