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)