การแคสต์คือโอเปอเรเตอร์พิเศษที่บังคับให้ข้อมูลประเภทหนึ่งถูกแปลงเป็นอีกประเภทหนึ่ง ในฐานะที่เป็นโอเปอเรเตอร์ นักแสดงจะเป็นเอกภาพและมีความสำคัญเหมือนกับโอเปอเรเตอร์ unary อื่นๆ
Cast ทั่วไปที่สนับสนุนโดยคอมไพเลอร์ C++ ส่วนใหญ่มีดังต่อไปนี้ -
(type) expression
โดยที่ประเภทคือประเภทข้อมูลที่ต้องการ มีโอเปอเรเตอร์แคสต์อื่นๆ ที่รองรับโดย C++ ซึ่งแสดงอยู่ด้านล่าง -
- const_cast
(expr) - ตัวดำเนินการ const_cast ใช้เพื่อแทนที่ const และ/หรือความผันผวนในการร่ายอย่างชัดเจน ประเภทเป้าหมายต้องเหมือนกับประเภทต้นทาง ยกเว้นการเปลี่ยนแปลงแอตทริบิวต์ const หรือแอตทริบิวต์ที่ไม่แน่นอน การหล่อประเภทนี้ควบคุมแอตทริบิวต์ const ของวัตถุที่ส่งผ่าน ไม่ว่าจะตั้งค่าหรือนำออก - dynamic_cast
(expr) - dynamic_cast ดำเนินการรันไทม์ที่ตรวจสอบความถูกต้องของการแคสต์ หากไม่สามารถทำการแคสต์ได้ การแคสต์จะล้มเหลวและนิพจน์จะประเมินเป็นโมฆะ dynamic_cast ทำการร่ายในประเภท polymorphic และสามารถส่งตัวชี้ A* ไปที่ตัวชี้ B* ได้ก็ต่อเมื่อวัตถุที่ชี้ไปที่จริง ๆ แล้วเป็นวัตถุ B - reinterpret_cast
(expr) - ตัวดำเนินการ reinterpret_cast เปลี่ยนตัวชี้เป็นพอยน์เตอร์ประเภทอื่น นอกจากนี้ยังอนุญาตให้ส่งจากตัวชี้ไปยังประเภทจำนวนเต็มและในทางกลับกันด้วย - static_cast
(expr) - ตัวดำเนินการ static_cast ทำการหล่อแบบ nonpolymorphic ตัวอย่างเช่น สามารถใช้เพื่อส่งตัวชี้คลาสฐานไปยังตัวชี้คลาสที่ได้รับ
ตัวอย่าง
การร่ายเหล่านี้เป็นกรณีเฉพาะมาก ลองมาพิจารณาตัวอย่างกับ cast ที่คอมไพเลอร์ใช้ -
#include <iostream> using namespace std; main() { double a = 21.09399; float b = 10.20; int c ; c = (int) a; cout << "Line 1 - Value of (int)a is :" << c << endl ; c = (int) b; cout << "Line 2 - Value of (int)b is :" << c << endl ; return 0; }
ผลลัพธ์
สิ่งนี้จะให้ผลลัพธ์ -
Line 1 - Value of (int)a is :21 Line 2 - Value of (int)b is :10