Exemplare von Klassen (=Objekte) halten neben den Exemplarvariablen noch eine "Referenz auf die Klasse", mit deren Hilfe Konstrukte der Art
if myObject is TMyClass then
und Polymorphie iA möglich werden.
Der hierfür benötigte Speicher ist die Größe einer Referenz selbst (zZt 4 Bytes). Darüber hinaus sind Klassen iA für "optimierten Zugriff" ausgerichtet. Diese Optimierung des Compilers hat bei der aktuellen Implementierung zB zur Folge, dass zwei Bytes tatsächlich 8 Bytes "belegen". Bei Records hingegen kann dieses Verhalten explizit mit
packed vermieden werden, um Speicher auf Kosten der Performance zu sparen.
Der Zugriff auf Exemplarvariablen ist identisch mit dem Zugriff bei Records, allerdings sollten bei Objekten die Exemplarvariablen im Sinne der
OOP generell verborgen sein (Geheimnisprinzip).
Delphi bietet hier das Konzept der
Eigenschaften (
Properties), bei der zwar Setter-Methoden zur Zusicherung von Invarianten, zum Lesen jedoch ein direkter Zugriff auf eine verborgene (private) Exemplarvariable angegeben werden kann. Übersetzt wird dieses Konstrukut beim Lesen dann wieder wie der "optimale Zugriff".
Lediglich beim Erzeugen und Freigeben von Exemplaren ist die Lösung mit Objekten etwas träger, bietet im Gegenzug aber die vielen Möglichkeiten der
OOP