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 initialisieren

    Das 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 Konstruktor T::T() , sofern T kein POD ist.

    Bedenke: Auch wenn new selbst ein eingebauter Operator ist, wird jeweils eine Funktion operator new aufgerufen.


Log in to reply