AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Wie wird OOP Compiler intern realisiert?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie wird OOP Compiler intern realisiert?

Ein Thema von Skiron · begonnen am 19. Mär 2004 · letzter Beitrag vom 20. Mär 2004
Antwort Antwort
tommie-lie
(Gast)

n/a Beiträge
 
#1

Re: Wie wird OOP Compiler intern realisiert?

  Alt 19. Mär 2004, 20:25
Also bei Delphi hinke ich mit den Internas noch arg hinterher, aber viele C-Compiler, allen vorran der GCC, benutzen für Klassen tatsächlich recordartige Strukturen. Eine Methode ist da ein Pointer auf eine Funktion.
Dabei werden immer die ältesten Subsets der Klasse nach vorne gepackt, wenn du also eine Klasse von irgendwo ableitest, werden Felder und Methoden nicht sortiert (Felder zuerst, dann erst die Methoden) oder sowas (Methoden zuerst, dann erst die Felder), sondern nur hinten drangehangen. Dadurch ist es dann möglich, einen Typecast in einen Ancestor-Typ zu machen, ohne daß der Compiler für sämtliche Eventualitäten die Strukturen neu schreiben darf.
Erzeugt werden die Klassen dann intern auch mit malloc (bzw was sich sonst so grad' in der C-Library findet), anschließend werden die Pointer auf die Methoden (ebenfalls nur einmal im Speicher) eingerenkt und fertig.
Da ich dieses Prinzip für sehr sinnvoll und effizient halte, vermute ich, daß Borland ähnlich vorgeht und ebenfalls recordähnliche Strukturen für Klassen verwendet.
Der Aufruf von Methoden eines Objektes sieht dann so aus, das man sich den Zeiger schnappt, dereferenziert, die Referenz auf das Objekt als Parameter (user-transparent) übergibt und hinspringt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:30 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