Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

Re: Zuweisung in einer anderen Klasse

  Alt 15. Sep 2009, 13:43
  b := a; <--- Warum ist diese Zuweisung nicht möglich B ist zwar Nachfahre von A, aber da B als Nachfahre unter Umständen neue/zusätzliche Funktionalitäten besitzen kan, ist es nur andersrum möglich

also A := B; geht, da der Typ A alle Funktionen enthält, welche B auch hat.


PS:
Delphi-Quellcode:
B := TClassB.Create;
B.Print > TClassB.Print
A := B;
A.Print > TClassA.Print

A := TClassB.Create;
A.Print > TClassA.Print
hier wäre wohl Virtual+Override angebracht


Delphi-Quellcode:
B := TClassB.Create;
B := A;
hierzu wurde zwar schon etwas gesagt, aber es wurde eventuell nicht klar erwähnt, daß du hiermit ein MemoryLeak erstellst

eine Instanz von TClassB wird erstellt und dann der Instanzvariable B eine andere Instanz zugewiesen, wobei die erstellte Instanz dann frei im Programm rumschwirrt und nicht freigegeben wird.
$2B or not $2B
  Mit Zitat antworten Zitat