E 'uno stile di codifica (chiamato Yoda Conditions) di evitare di scrivere =
invece di ==
in un se-dichiarazione, è valido per utilizzare l'assegnazione =
in una dichiarazione if-, ma non è di solito quello che vuoi.
Personalmente, preferisco non usarlo in questo modo perché è difficile da leggere e i compilatori moderni ti avviseranno quando usi =
in un'istruzione if.
Si noti inoltre che:
if(ptr == NULL)
è lo stesso con if(!ptr)
.
- C++ 11 ha introdotto
nullptr
da sostituire utilizzando NULL
. Quindi, per inizializzare un puntatore nullo, è preferito usare ptr = nullptr
proposito perché usare nullptr
oltre NULL
:
Prima di C++ 11, NULL
di solito è implementato internamente come #define NULL 0
, ma il problema è, 0
è anche lo zero intero. Potrebbe causare problemi in alcune situazioni. Per esempio:
void func(int n);
void func(char *s);
func(NULL); //call which function?
Anche se l'auther implica che NULL
è un tipo di puntatore, ma il compilatore è sufficiente sapere per chiamare func(0)
. Quindi verrà chiamata la prima versione.
Utilizzando func(nullptr)
, il compilatore saprà che è un puntatore e chiama la seconda versione.
fonte
2013-07-21 12:42:39
Di solito scrivo 'if (! Ptr)'. È più breve e meno ridondante. – glglgl
Qui sono un po 'confuso, se la tua domanda è perché non puoi usare 'NULL == ptr' invece di' ptr == NULL' o la tua domanda è perché non puoi usare '=' invece di '== '? – Ravi
Ho posto due domande – minicaptain