Thread Bitte um Hilfe bei bless Fehler
(39 answers)
Opened by bianca at 2019-09-28 17:06 2019-09-30T08:43:15 Muffi Naja, eigentlich braucht ein Objekt gar keinen Zeiger. Nehmen wir mal folgende Klasse in C++: Code: (dl
)
struct MyClass { char c; }; Das ist eine Klasse, die ein char einhält. Sie ist - überraschung - nur 1 Byte groß: sizeof(MyClass) = 1. In dem einen Byte ist kein Platz für Zeiger. Wenn ich Funktionen drin habe, brauche ich noch immer keine Zeiger: Es ist immer noch: sizeof(MyClass2) = 1. Einen Pointer zum Code brauche ich erst, wenn ich virtuelle Funktionen nutzen will: Plötzlich: sizeof(MyClass3) = 16 Die 16 Bytes sind aber 1 Byte für das char, 7 Bytes Padding (je nach Architektur), und 8 Bytes für den vtable-Pointer (auch je nach Architektur). Also auch nur 1 Pointer. In C++ braucht man also 0 (wenn keine virtuellen Funktionen) oder 1 Pointer (mit virtuellen Funktionen). Wo braucht man denn 2 Pointer? Edit: natürlich nur 7 und nicht 15 Bytes Padding. Last edited: 2019-09-30 22:27:13 +0200 (CEST) |