Zitat von
SebE:
ok, wir reden hier sicher von verschiedenen Schuhen.
Erklär mir das bitte näher: in wiefern benötigt ein Compiler die Größe einer abstrakten Klasse?
Und für die "richtige" (abgeleitete) Klasse kennt er doch die abstrakte Klasse.
Zwei Beispiele in einem:
Delphi-Quellcode:
type
TAbstract = class abstract
// Größe = GrößeVon(Felder neu in TAbstract) + GrößeVon(Vorfahre(TAbstract))
// = GrößeVon(Felder neu in TAbstract) + GrößeVon(TObject)
end;
TConcrete = class(TAbstract)
// Größe = GrößeVon(Felder neu in TConcrete) + GrößeVon(Vorfahre(TConcrete))
// = GrößeVon(Felder neu in TConcrete) + GrößeVon(TAbstract)
end;
Und jetzt für zwei abstrakte Klassen, die sich gegenseitig verwenden: (Schenk' ich mir...)
Abstrakte Klasse können nicht instantiiert werden. Der Klassenzusatz "abstract" hat nur disziplinarische Wirkung, vergleichbar mit Sichtbarkeitsbeschränkungen. Insofern unterscheiden sich abstrakte Klassen nicht von "gewöhnlichen" Klassen. Die Größe ist für alle gleichsam bedeutsam.