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:
- Variante 1
template <typename T> void DeleteAndNull(T* Pointer) { delete Pointer; Pointer = 0; }
- 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.