![]() |
AW: Eine Frage an die Cracks: erben
Zitat:
|
AW: Eine Frage an die Cracks: erben
Methoden(properties) sind grundsätzlich nur Zeiger, egal ob die Methode geerbt ist oder nicht.
![]() Mach dich mal nach der VMT schlau |
AW: Eine Frage an die Cracks: erben
Zitat:
Die Instanz ist ein Speicherbereich, der mit dem "Klassenstempel" eine besondere Struktur bekommt. Das war es schon. Die Methoden werden wie eine procedure einfach ausgeführt (der einzige Unterschied ist das Mitführen von Self einer Referenz auf die eigene Instanz => Speicherbereich) Greift man innerhalb der Methode nicht auf die Instanz zurück, so kann man diese auch einfach aufrufen.
Delphi-Quellcode:
Was allerdings gleich ist, sind Klassenvariablen, die werden nicht geklont, sondern die sind in jeder Ableitung da und vor allem gleich!
TFoo = class
private FValue : Integer; public function Calc( a, b : Integer) : Integer; overload; function Calc( a : Integer ) : Integer; overload; end; function TFoo.Calc( a, b : Integer ) : Integer; begin Result := a + b; end; function TFoo.Calc( a : Integer ) : Integer; begin Result := Calc( a, FValue ); end; var LFoo : TFoo; begin LFoo.Calc( 3, 4 ); // Keine AV obwohl es keine Instanz gibt LFoo.Calc( 3 ); // es gibt eine AV, weil in der Methode auf die Instanz zugegriffen wird end;
Delphi-Quellcode:
TFoo = class
class var _Value : Integer; end; TFoo2 = class( TFoo ) end; begin TFoo._Value := 42; Assert( TFoo._Value = TFoo2._Value ); end; |
AW: Eine Frage an die Cracks: erben
Zur VMT und DMT hat sirius in
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:44 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