Konstruktor
-
Hi
Mich würde mal interessieren, zu was genau man denn einen Konstruktor zählt.
Auf der einen Seite kann man ihn Aufrufen bevor die man das dazugehörige Objekt instanziert hat. -> static,kein this
Auf der anderen Seite kann er Membervariablen initialisieren und auf diese zugreifen...
Gruß
-
AlexanderKiebler schrieb:
Auf der einen Seite kann man ihn Aufrufen bevor die man das dazugehörige Objekt instanziert hat. -> static,kein this
Nein, man kann einen Konstruktor überhaupt nicht aufrufen. Er wird automatisch aufgerufen, wenn das Objekt instanziiert wird. Er bekommt dann natürlich auch einen this-Zeiger. Er ist zwar etwas besonderes, aber definitiv nicht static.
-
Bashar schrieb:
Nein, man kann einen Konstruktor überhaupt nicht aufrufen.
Echt?
Aber man kann doch einen bereits angeforderten Speicherbereich mit dem
Aufruf des Konstruktor initialisieren
-
Verwunderter schrieb:
Bashar schrieb:
Nein, man kann einen Konstruktor überhaupt nicht aufrufen.
Echt?
Aber man kann doch einen bereits angeforderten Speicherbereich mit dem
Aufruf des Konstruktor initialisierenDas ist aber kein Methodenaufruf, sondern ein spezielles new - Placement new!
-
l'abra d'or schrieb:
Das ist aber kein Methodenaufruf, sondern ein spezielles new - Placement new!
Doch was macht das genau?
new (address) T();
ruft gleich zwei Funktionen auf: Zum einen das Placement-New
operator new(size_t, void*)
und zum anderen den KonstruktorT::T()
, sofernT
kein POD ist.Bedenke: Auch wenn
new
selbst ein eingebauter Operator ist, wird jeweils eine Funktionoperator new
aufgerufen.