แคสต์คือโอเปอเรเตอร์พิเศษที่บังคับให้แปลงข้อมูลประเภทหนึ่งเป็นอีกประเภทหนึ่ง ในฐานะที่เป็นโอเปอเรเตอร์ acast เป็น unary และมีความสำคัญเช่นเดียวกับโอเปอเรเตอร์ unary อื่นๆ
คาสต์ทั่วไปส่วนใหญ่ที่รองรับโดยคอมไพเลอร์ C++ ส่วนใหญ่มีดังนี้
(type) expression
โดยที่ type คือชนิดข้อมูลที่ต้องการ มีโอเปอเรเตอร์แคสต์อื่นๆ ที่รองรับโดย 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 ตัวอย่างเช่น สามารถใช้เพื่อส่งตัวชี้คลาสฐานไปยังตัวชี้คลาสที่ได้รับ
ตัวดำเนินการแคสต์ที่กล่าวถึงข้างต้นทั้งหมดจะถูกใช้ในขณะที่ทำงานกับคลาสและอ็อบเจ็กต์ สำหรับตอนนี้ ให้ลองใช้ตัวอย่างต่อไปนี้เพื่อทำความเข้าใจตัวดำเนินการแคสต์อย่างง่ายที่มีอยู่ใน C++ คัดลอกและวางโปรแกรม C++ ต่อไปนี้ในไฟล์ test.cpp แล้วคอมไพล์และเรียกใช้โปรแกรมนี้
โค้ดตัวอย่าง
#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