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

พิมพ์ตัวดำเนินการแคสต์ใน C++


แคสต์คือโอเปอเรเตอร์พิเศษที่บังคับให้แปลงข้อมูลประเภทหนึ่งเป็นอีกประเภทหนึ่ง ในฐานะที่เป็นโอเปอเรเตอร์ 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