![]() |
Re: Konstruktor Create Virtual oder nicht?
Da meine Frage grob in die gleiche Richtung geht und ich nicht extra für so etwas banales nen neuen Thread aufmachen will, häng ich mich einfach mal hinten dran.
Ich möchte lediglich wissen: wenn ich eine eigene Klasse von TObject ableite mit einem eigenen Konstruktor und Destruktor, muss ich dann zu Beginn des Konstruktors erstmal inherited aufrufen, genauso wie am Ende des Destruktors? Also quasi so:
Delphi-Quellcode:
Oder sind beide inherited-Aufrufe unnötig oder gar falsch? Oder nur einer von beiden?!?
interface
TMyClass = class(TObject) private FBlaBlubb: TBlaBlubb; public constructor Create; destructor Destroy; override; property BlaBlubb: TBlaBlubb read FBlaBlubb write FBlaBlubb; end; implementation { TMyClass } constructor TMyClass.Create; begin inherited; FBlaBlubb := nil; end; destructor TMyClass.Destroy; begin FBlaBlubb.Free; inherited; end; |
Re: Konstruktor Create Virtual oder nicht?
Da die Destruktoren und Konstruktoren in TObject leer sind, benötigst du es nicht unbedingt. Aber damit hast du auch wieder einen möglichen Fehler geschaffen: Wenn du später mal zwischen TObject und deiner Klasse eine weitere Basisklasse dazwischenschiebst, dann werden deren Konstruktoren- und Destruktorenanweisungen nicht ausgeführt. Und das suchste denn ein paar Wochen nach der Deklaration der ersten Klasse vergeblich, warum das nicht klappt.
Der Speicher für die Instanz wird eh vor dem Konstruktoraufruf alloziiert, somit brauchst du nicht zu fürchten, dass die Instanz nicht komplett ist ohne den inherited Aufruf. Im Endeffekt bist du mit dem inherited Aufruf auf der sicheren Seite. BTW: Deine Initialisierung im Konstruktor ist nicht zwingend notwendig, da Member automatisch mit dem Ordinalwert 0 initialisiert werden, also nil, false, 0.0, 0, #0 und '' (wobei Strings eine kleine Ausnahme bilden). |
Re: Konstruktor Create Virtual oder nicht?
Zitat:
Zitat:
Vielen Dank für deine Hilfe! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:28 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