2 Stimmen

Weisen Unterklassen Speicher und Methoden ihrer Vorgänger zu?

Wenn in C++ eine Klasse eine andere Klasse erbt und ich ein Objekt für die Unterklasse erstelle, wird dann das Objekt der Unterklasse auch Speicher für alle Datenelemente und Mitgliedsfunktionen für die Oberklasse erzeugen?

6voto

Alex Martelli Punkte 805329

Ja (obwohl die Mitgliedsfunktionen an sich nicht brauchen Speicher ... vtables sind ein anderes Thema, und sind pro-Klasse und nicht pro-Instanz sowieso) - eine Instanz der Unterklasse "embeds", wenn Sie wollen, eine der Oberklasse. Nehmen wir der Einfachheit halber an, dass alle Instanzvariablen 32-Bit-Ints sind: Wenn die Oberklasse 3 hat und die Unterklasse 2 weitere hinzufügt, dann wird jede Instanz der Unterklasse 5 x 4 = 20 Bytes zuweisen - 8 für ihre eigenen Instanzvariablen, plus 12 für die Instanzvariablen der Oberklasse. (Plus 4 Bytes für einen vtable-Zeiger, falls virtuelle Methoden im Spiel sind).

Also, was ist das Frage ...?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X