เราทุกคนตระหนักดีว่าควรเริ่มต้นตัวชี้ (และประเภท POD อื่น ๆ )
คำถามจะกลายเป็น "ใครควรเริ่มต้น"
โดยทั่วไปมีสองวิธี:
- คอมไพเลอร์เริ่มต้นใช้งาน
- นักพัฒนาเริ่มต้นใช้งาน
สมมติว่าคอมไพเลอร์เริ่มต้นตัวแปรใด ๆ ที่นักพัฒนาไม่ได้เริ่มต้นอย่างชัดเจน จากนั้นเราก็พบกับสถานการณ์ที่การเริ่มต้นตัวแปรนั้นไม่สำคัญและเหตุผลที่นักพัฒนาไม่ดำเนินการที่จุดประกาศคือเขา / เธอจำเป็นต้องดำเนินการบางอย่างจากนั้นจึงมอบหมาย
ตอนนี้เรามีสถานการณ์ที่คอมไพเลอร์ได้เพิ่มคำสั่งพิเศษให้กับโค้ดที่เริ่มต้นตัวแปรเป็น NULL จากนั้นโค้ดของนักพัฒนาจะถูกเพิ่มเพื่อทำการเริ่มต้นที่ถูกต้อง หรือภายใต้เงื่อนไขอื่น ๆ ตัวแปรอาจไม่เคยใช้ นักพัฒนา C ++ จำนวนมากจะกรีดร้องผิดปกติภายใต้เงื่อนไขทั้งสองโดยเสียค่าใช้จ่ายของคำสั่งพิเศษนั้น
ไม่ใช่แค่เรื่องเวลา แต่ยังมีพื้นที่ มีสภาพแวดล้อมมากมายที่ทรัพยากรทั้งสองอยู่ในระดับพรีเมี่ยมและนักพัฒนาไม่ต้องการที่จะยอมแพ้เช่นกัน
แต่ : คุณสามารถจำลองผลของการบังคับให้เริ่มต้นได้ คอมไพเลอร์ส่วนใหญ่จะเตือนคุณเกี่ยวกับตัวแปรที่ไม่ได้กำหนดค่าเริ่มต้น ดังนั้นฉันจึงปรับระดับการเตือนให้อยู่ในระดับสูงสุดเสมอ จากนั้นบอกคอมไพเลอร์ให้ถือว่าคำเตือนทั้งหมดเป็นข้อผิดพลาด ภายใต้เงื่อนไขเหล่านี้คอมไพเลอร์ส่วนใหญ่จะสร้างข้อผิดพลาดสำหรับตัวแปรที่ไม่ได้เตรียมใช้งาน แต่ถูกใช้และจะป้องกันไม่ให้สร้างโค้ด