Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

เมื่อไหร่ควรใช้ static_cast, dynamic_cast, const_cast และ reinterpret_cast ใน C++


const_cast

ใช้เพื่อลบหรือเพิ่ม const ให้กับตัวแปร สามารถใช้ได้เมื่อจำเป็นต้องเพิ่ม/ลบความเป็น const จากตัวแปร

static_cast

ใช้สำหรับการแปลงชนิดข้อมูลทั่วไป (normal/ordinary type conversion) นี่คือการแปลงที่รับผิดชอบในการแปลงชนิดโดยอัตโนมัติ (implicit type coercion) และสามารถเรียกใช้งานได้อย่างชัดเจน (explicitly) ควรใช้ในกรณีเช่น การแปลง float เป็น int, char เป็น int เป็นต้น

dynamic_cast

ใช้สำหรับจัดการโพลีมอร์ฟิซึม (polymorphism) คุณต้องใช้เฉพาะเมื่อคุณแปลงเป็นคลาสลูก (derived class) ใช้งานเฉพาะในการสืบทอด (inheritance) เมื่อคุณแปลงจากคลาสพ่อ (base class) เป็นคลาสลูก

reinterpret_cast

เป็นการแปลงที่ซับซ้อนที่สุด ใช้สำหรับการตีความรูปแบบบิต (reinterpreting bit patterns) และเป็นระดับต่ำมาก (extremely low level) ใช้หลักสำหรับสิ่งต่างๆ เช่น การเปลี่ยนข้อมูลดิบ (raw data bit stream) ให้กลายเป็นข้อมูลจริง หรือการเก็บข้อมูลในบิตต่ำสุดของ pointer ที่จัดตำแหน่งแล้ว (aligned pointer)