Parameter order bei überladenem "operator new"



  • Hallo,

    ist die Art und Weise, wie man ein überladenes "operator new"
    mit "new" aufrufen kann, ein Spezialfall für diesen operator?

    inline void* 
    operator new( size_t bytes, bool doSomething ) throw( )
    {
        if ( doSomething ) { ... }
        return ::operator new( bytes );
    }
    
    new ( true ) int;
    

    "operator new" scheint hier in der umgekehrten Reihenfolge
    die Parameter zu bekommen (doSomething bekommt das true,
    bytes bekommt sizeof(int).

    Besser kann ich meine Frage gerade nicht formulieren.
    Ist dieses "Mapping" der Parameter die man an "new" übergibt
    auf die Parameter, die "operator new" bekommt, ein Spezialfall?

    Danke! Und sorry falls die Frage etwas strange klingt...



  • Ja, operator new ist ein spezieller überladener Operator. Die Argumente in der Klammer (bei dir true ) werden auf die Parameter nach dem ersten size_t -Parameter abgebildet. Die Reihenfolge ist ab da auch so wie bei der Übergabe.


  • Mod

    Spezialfall in Bezug worauf?
    Der Operand 'int' ist ja als solcher schon kein normaler Operand wenn man das Ganze mit einem normalen Funktionsaufruf vergleicht.

    new (a,b,c,d,e) (T); // ruft operator new(sizeof(T),a,b,c,d,e) oder operator new[](sizeof(T),a,b,c,d,e) auf
    


  • Danke schön! 🙂


Anmelden zum Antworten