Ich lese über Empty Base Optimization (EBO). Beim Lesen tauchte die folgenden Fragen in meinem Kopf nach oben:Wann verwenden Programmierer Empty Base Optimization (EBO)
Was den Punkt der Verwendung von leeren Klasse als Basisklasse ist, wenn es nichts zu den abgeleiteten Klassen trägt (weder Funktionalität weise noch datenweisen)?
In this article, las ich diese:
// S ist leer
Klasse struct T: S
{
int x;
};[...]
Beachten Sie, dass wir keine Daten oder Code Genauigkeit verloren haben: wenn Sie ein eigenständiges Objekt vom Typ S erstellen, die Größe des Objekts ist nach wie vor 1 (oder mehr) als vorher; nur wenn S als Basis verwendet wird Klasse einer anderen Klasse seinen Speicher Fußabdruck schrumpfen auf Null. Um zu realisieren, die Auswirkungen dieser Einsparungen, stellen Sie sich einen Vektor vor, der 125.000 Objekte enthält. Das EBO allein spart ein halbes Megabyte Speicher!
Bedeutet es, dass, wenn wir verwenden „S“ als Basisklasse „T“ nicht, wir würden notwendigerweise verbrauchen doppelt so Megabyte Speicher? Ich denke, der Artikel vergleicht zwei verschiedene Szenarien, die ich nicht für richtig halte.
Ich würde gerne ein echtes Szenario kennen, wenn EBO sich als nützlich erweisen könnte (bedeutet, in dem gleichen Szenario würden wir notwendigerweise verlieren, wenn wir EBO nicht verwenden!).
Bitte beachten Sie, dass, wenn Ihre Antwort Erklärungen wie diese enthält:
Der springende Punkt ist, dass eine leere Klasse nicht-Größe Null hat, aber wenn abgeleitet oder Ableiten es die Größe Null haben kann, dann bin ich nicht zu fragen das, wie ich das schon weiß. Meine Frage ist, warum sollte jemand seine Klasse überhaupt von einer leeren Klasse ableiten? Auch wenn er seine Klasse nicht ableitet und einfach schreibt (ohne irgendeine leere Basis), ist er in irgendeiner Weise verloren?
@Suma ... was hast du in meinem Beitrag geändert? : -/.. Ich bin nicht in der Lage, herauszufinden .. – Nawaz
Warum sagen Sie, dass die Basisklasse nichts funktional beiträgt? – jalf
@jalf .... bisher habe ich kein Beispiel gesehen ... Übrigens, mit Funktionalität meinte ich Funktionen, die etwas tun, anstatt nichts – Nawaz