C ++ 'ın C üzerine cıvatalandığı ilk günlerinde NULL olarak tanımlandığı gibi kullanamazsınız (void*)0. Başka bir işaretçiye NULL atayamazsınız void*, bu da onu işe yaramaz hale getirir. O günlerde, 0boş göstericiler için (sıfır) kullandığınız kabul edildi .
Bugüne kadar sıfırı boş gösterici olarak kullanmaya devam ettim ama etrafımdakiler kullanmakta ısrar ediyorlar NULL. Ben şahsen NULLmevcut bir değere bir isim ( ) vermek için herhangi bir fayda görmüyorum - ve ben de işaretçileri doğruluk değerleri olarak test etmek istiyorum:
if (p && !q)
do_something();
daha sonra sıfır kullanmak daha mantıklıdır (kullandığınız gibi NULL, mantıksal olarak kullanamazsınız p && !q- sıfır NULLolduğunu varsaymadıkça açıkça karşılaştırmanız gerekir NULL, bu durumda neden kullanılır NULL).
NULL yerine sıfırı tercih etmek için nesnel bir neden var mı (ya da tam tersi) mi, yoksa sadece kişisel tercih mi?
Düzenleme: RAII ve istisnalar ile nadiren sıfır / NULL işaretçileri kullandığımı eklemeliyim (ve aslında söylemek istedim), ancak bazen hala onlara ihtiyacınız var.