ในวันแรกของ C ++ เมื่อมันถูกปิดด้านบนของ C, (void*)0
คุณไม่สามารถใช้เป็นโมฆะขณะที่มันถูกกำหนดให้เป็น คุณไม่สามารถกำหนด NULL ให้กับตัวชี้ใด ๆ นอกจากvoid*
ที่ทำให้มันไร้ประโยชน์ ย้อนกลับไปในสมัยนั้นเป็นที่ยอมรับว่าคุณใช้0
(ศูนย์) สำหรับพอยน์เตอร์พอยน์เตอร์
จนถึงวันนี้ผมยังคงใช้เป็นศูนย์เป็นตัวชี้โมฆะ แต่คนรอบ ๆ NULL
ตัวผมยืนยันในการใช้ ฉันเองไม่เห็นประโยชน์ใด ๆ ในการตั้งชื่อ ( NULL
) ให้กับค่าที่มีอยู่ - และเนื่องจากฉันต้องการทดสอบพอยน์เตอร์เป็นค่าความจริง:
if (p && !q)
do_something();
จากนั้นใช้ศูนย์ทำให้รู้สึกมากขึ้น (เช่นถ้าคุณใช้NULL
คุณไม่สามารถใช้อย่างมีเหตุผลp && !q
- คุณต้องเปรียบเทียบอย่างชัดเจนNULL
เว้นแต่คุณจะถือว่าNULL
เป็นศูนย์ในกรณีนี้ทำไมใช้NULL
)
มีเหตุผลวัตถุประสงค์ใดที่จะชอบศูนย์มากกว่า NULL (หรือกลับกัน) หรือทั้งหมดเป็นเพียงการตั้งค่าส่วนตัว?
แก้ไข: ฉันควรเพิ่ม (และตั้งใจจะพูด แต่เดิม) ว่าด้วย RAII และข้อยกเว้นฉันไม่ค่อยใช้ตัวชี้ศูนย์ / NULL แต่บางครั้งคุณก็ยังต้องการ