C++ syntax



  • Hi zusammen:

    es geht eigentlich um dieses Forum c++ Antrag:

    https://www.c-plusplus.net/forum/233595-full

    ersten habe ich nicht vertstanden was ist der Unterschied zwischen dieses beide Varianten:

    1. Variante 1
    template <typename T>
    void DeleteAndNull(T* Pointer)
    {
        delete Pointer;
        Pointer = 0;
    }
    
    1. variante 2
    template <typename T>
    void DeleteAndNull(T*& Pointer)
    {
        delete Pointer;
        Pointer = 0;
    }
    

    Was ist falsch an Variante 1 und warum?

    was wäre eigentlich zu empfehlen einen Macro zu benutzen wie dieses:

    #define myDELETE(PTR) \
        delete PTR; PTR = NULL;
    

    oder halt Template Funktion ?

    Danke in Voraus



  • Bei #1 wird die lokale variable auf null gesetzt, beim zweiten wird über die Referenz zugegriffen.
    Insgesammt ist nullptr einem einfachen 0 oder NULL vorzuziehen, delete und anschließend eh sinnlosem nullsetzen einen smartpointer und makros sind eh nicht zu empfehlen.


Log in to reply