Einzelnen Beitrag anzeigen

Furtbichler
(Gast)

n/a Beiträge
 
#36

AW: Variable.Create;

  Alt 10. Mär 2014, 11:48
Ich meine nein, denn da wird nichts konstruiert.
Klar, es wird eine gültige Record-Instanz konstruiert.
Vergleiche Record einfach mit Klassen in C++: Es ist egal, ob das Objekt auf dem Heap oder auf dem Stack liegt, es wird mit einem Konstruktor erstellt und mit einem Destruktor zerstört.
Ach, echt?
Delphi-Quellcode:
Var
  myRecord : TMyRecord;

Begin
  myRecord.FooBar := 23;
Geht dann nicht mehr? Das geht doch seit Pascal 0.1a so... würde mich doch sehr stark wundern, wenn 99.999% der legacy Delphi-Software dann nicht mehr funktioniert.

So wie ich den Link im DocWiki verstehe, ist ein Record weiterhin ein Record und lebt auch ohne Aufruf des Konstruktors sofort. Das bedeutet: Wenn ich den Konstruktor nicht aufrufen muss, dann kann er ja nicht viel konstruieren, denn ob ich den nun aufrufe oder nicht, ändert am Record nichts, außer eben, das irgend etwas initialisiert wird. Ergo ist das ein Initialisator (was ein dämliches Wort ist), in jedem Fall eine simple Methode.

Was auch sein könnte: Wenn ich einen Recordkonstruktor definiere, dann *muss* ich den auch verwenden, das wird aber aus dem kleinen Absatz nicht ersichtlich...
  Mit Zitat antworten Zitat