Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
Turbo Delphi für Win32
|
Re: Wie wird OOP Compiler intern realisiert?
19. Mär 2004, 20:39
Wie alles funktioniert, weiß ich nicht, aber ein paar Sachen kann ich dir erklären:
Klassen
Klassen bestehen aus Methoden und Feldern. Während für Felder bei jedem Objekt neuer Speicherplatz alloziert wird, existieren Methoden nur einmal im Speicher. Da eine Methode aber evtl. auf Felder des Objekts zugreift, in dessen kontext sie aufgerufen wurde, muss ja irgendwo einen Bezug zur Klasse existieren. Das wird durch den unsichtbaren Parameter Self bewerkstelligt. Wenn du also folgende Methode hast:
[delphi][pre]procedure TMyClass.SomeMethod(Dummy: Integer);[/pre]
sieht diese in Wirklichkeit so aus:
[delphi][pre]procedure TMyClass.SomeMethod(Self: TMyClass; Dummy: Integer);[/pre]
Der Speicher, den ein Objekt belegt, liegt im Heap. Eine Variable einer Klasse ist nicht das Objekt selbst, sondern nur eine referenz, also ein Zeiger, auf das Objekt. Allerdings merkst du das dank der eingebauten Compiler Magic nicht.
Martin Leim Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
|