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
 
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.487 Beiträge
 
Delphi 12 Athens
 
#6

AW: [Tutorial] Den Destruktor verstehen

  Alt 19. Apr 2012, 12:53
In 99,9% aller Fälle sind deine Regeln zutreffend, es kann Ausnahmefällen geben, allerdings sollte eine Regel immer eingehalten werden: Der Destructor "Destroy" muss immer in der Lage sein das Objekt korrekt freizugeben.

Ein kleines Beispiel mit Zirkelbezug:
Delphi-Quellcode:
TPartnerObject = class(TObject)
protected
  FPartner: TPartnerObject;
public
  // darf nicht mehr überschrieben werden
  destructor Destroy; override; finally;
  // kann in abgeleiteten Klassen überschrieben werden
  destructor MyDestroy(Sender: TObject); virtual;
  property Partner: TPartnerObject read FPartner write FPartner;
end;

// bleibt weiterhin voll funktionsfähig
destructor TPartnerObject.Destroy;
begin
  MyDestroy(Self);
end;

// Destroy ruft immer das für die Klasse gültige MyDestroy auf
destructor TPartnerObject.MyDestroy(Sender: TObject);
begin
  if Assigned(FPartner) and (FPartner <> Sender) then
    FPartner.MyDestroy(Sender);

  inherited Destroy;
end;


Kette := TPartnerObject.Create;
Kette.Partner := TPartnerObject.Create;
Kette.Partner.Partner := TPartnerObject.Create;
Kette.Partner.Partner.Partner := Kette;

FreeAndNil(Kette);
  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 09:52 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