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