Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: Constructor from Instance

  Alt 15. Jan 2024, 09:28
Zitat:
Animal1.Create; // << Das funktioniert nicht. Animal1 wird überschrieben.
Natürlich, weil du hier den Constructor als Funktion/Methode aufrufst, auf einer bestehenden Objekt-Instanz.

Man benutzt zum Erstellen NIEMALS keine Variable, sondern immer den Typ.

ALSO
Delphi-Quellcode:
//Animal2 := Animal1.Create; {NEIN}
Animal2 := TAnimal.Create;
denn sowas will und sollte man, nach Möglichkeit, nicht machen:
Delphi-Quellcode:
Animal2 := TAnimal(TAnimal.NewInstance);
Animal2.Create;

Zitat:
Jetzt noch ClassType ...
Ja, Ob jun direkt den Klassentyp verwenden, oder über eine KlassenTyp-Varialbe (TClass) ... Hauptsache eine Klasse und nicht das Objekt.


Dass es dir das Objekt in Variable Animal1 überschrieben hat, ist korrekt.
Mehr Spaß hättest du mit Animal2 := Animal2.Create; , denn diese Variable war noch nicht initialisiert und es hätte hoffentlich eine schöne Exception gegeben.

Zitat:
Animal2 := TAnimalClass(Animal1.ClassType).Create;
Und nun nur nochmal aus Spaß, auch hier geht es mit getrennter Initialisierung/Speicherreservierung und nachträglichem Constructor.
Delphi-Quellcode:
Animal2 := TAnimal(Animal1.NewInstance);
Animal2.Create;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (15. Jan 2024 um 09:37 Uhr)
  Mit Zitat antworten Zitat