![]() |
Delphi-Version: 5
Inherited im Destroy notwendig?
Im Büro kam gerade die Diskussion auf: Ist ein Inherited im Destroy notwendig, wenn eine Klasse nur von TObject abgeleitet ist? Der eine sagt ja, der andere von nicht. Was ist den nun korrekt?
Beispiel:
Delphi-Quellcode:
type
TTestClass = class private fVar : TList; public constructor create; destructor destroy;override; end; constructor TTestClass.create; begin inherited; fVar:=TList.create; end; destructor TTestClass.Destroy; begin fVar.Free; end; |
AW: Inherited im Destroy notwendig?
Da TObject compiler magic verwendet, geht es m.W. auch ohne. Aber um mögliche Fehler wegen Änderungen in der Zukunft zu vermeiden, sollte man es trotzdem aufrufen.
|
AW: Inherited im Destroy notwendig?
Zitat:
|
AW: Inherited im Destroy notwendig?
In der System.pas von Delphi 2007 steht Folgendes:
Zitat:
|
AW: Inherited im Destroy notwendig?
Wenn man von TObject erbt, was der Standard ist, wenn man nix angibt, dann könnte man im Constructor und Destructor das Inherited weglassen.
Das Objekt selber wird quasi im BEGIN des Constuctor und END des Destructor erstellt/freigegeben. Inherited sollte man aber dennoch immer angeben ... Nicht daß man es mal vergißt, sollte man einen vorhandenen Constuctor/Destructor überschreiben. :angle2: Lieber einmal zuviel, als einmal zu wenig und Schaden kann es eigentlich nicht. Ich stimme da also vollkommen zu und "ja, man sollte es immer hinschreiben". und wenn es an einer Stelle mal wirklich nicht der überschriebene Constructor/Destructor aufgerufen werden, dann besser einen Hinweis hinschreiben, warum das so ist. Ich fände eine partiell deativierbare (ala reintroduce) Compilerwarung ganz nett, welche einen warnt, wenn kein Inherited vorhanden ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:56 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