Jest to styl kodowania (nazwane Yoda Conditions), aby uniknąć pisania =
zamiast ==
w if-oświadczenie, że to ważne, aby użyć zadanie =
w if-oświadczenie, ale to nie jest zwykle to, co chcesz.
Osobiście wolę tego nie używać, ponieważ jest to trudne do odczytania, a nowoczesne kompilatory ostrzegą użytkownika, gdy użyje się instrukcji =
w instrukcji if.
Należy również pamiętać, że:
if(ptr == NULL)
samo jest z if(!ptr)
.
- C++ 11 wprowadzono
nullptr
w celu zastąpienia za pomocą NULL
. Tak aby zainicjować pustego wskaźnika, to korzystne jest stosowanie ptr = nullptr
dlaczego używać nullptr
nad NULL
:
Przed C++ 11, NULL
jest zazwyczaj realizowane wewnętrznie jako #define NULL 0
, ale problemem jest to, 0
jest także liczba całkowita zero. Może to powodować problemy w niektórych sytuacjach. Na przykład:
void func(int n);
void func(char *s);
func(NULL); //call which function?
Choć auther oznacza, że NULL
jest rodzajem wskaźnika, ale kompilator po prostu wiem zadzwonić func(0)
. Tak więc pierwsza wersja zostanie wywołana.
Przy użyciu func(nullptr)
kompilator będzie wiedział, że jest wskaźnikiem i wywołuje drugą wersję.
Zwykle piszę "jeśli (! Ptr)". Jest krótszy i mniej zbędny. – glglgl
Jestem tu trochę zakłopotany, czy pytanie brzmi: dlaczego nie możesz użyć 'NULL == ptr' zamiast' ptr == NULL' lub twoje pytanie brzmi: dlaczego nie możesz użyć '=' zamiast '== '? – Ravi
Zadałem dwa pytania: – minicaptain