กำหนดให้แสดงการทำงานของ const_cast ใน C++
const_cast เป็นหนึ่งในตัวดำเนินการแคสต์ประเภทหนึ่ง มันถูกใช้เพื่อเปลี่ยนค่าคงที่ของวัตถุใด ๆ หรือเราสามารถพูดได้ว่ามันถูกใช้เพื่อลบธรรมชาติคงที่ของวัตถุใด ๆ
const_cast สามารถใช้ในโปรแกรมที่มีอ็อบเจ็กต์ที่มีค่าคงที่บางอย่างซึ่งจำเป็นต้องเปลี่ยนเป็นครั้งคราวในบางจุด
ไวยากรณ์
ไวยากรณ์มีดังนี้ −
const_cast<ชื่อประเภท>(นิพจน์)
ตัวอย่าง
อินพุต:x =50const int* y =&xcout<<"ค่าเดิมคือ"<<*y<<"\n";int* z=const_cast(y);*z=100;cout <<"ค่าใหม่คือ"<<*y;เอาต์พุต:ค่าเดิมคือ 50ค่าใหม่คือ 100
ตัวอย่างต่อไปนี้แสดงการใช้งานพื้นฐานของ const_cast ในที่นี้เราได้ประกาศตัวแปรคงที่ ”x” ของประเภท int ซึ่งกำหนดค่าเป็น 50 และตัวชี้คงที่อีกตัวหนึ่ง “y” ของประเภท int ซึ่งชี้ไปที่ตัวแปร “x”
ต้องสร้างตัวชี้ตัวที่สามเพื่อใช้ const_cast และที่นี่เราได้สร้างตัวชี้ ”z” ของประเภทข้อมูลเดียวกัน นั่นคือ int.
ดังนั้นเมื่อเราส่งตัวชี้คงที่ "y" ซึ่งชี้ไปที่ตัวแปรคงที่ "x" ลงใน const_cast และกำหนดค่าให้กับตัวชี้ z เราจะสามารถเปลี่ยนแปลงค่าของตัวชี้คงที่ "y" ได้พี>
วิธีนี้ทำให้เราเปลี่ยนค่าคงที่จาก 50 เป็น 100 โดยใช้ const_cast
หากเราพยายามเปลี่ยนค่าของ “x” ที่ตัวชี้ “y” ชี้ไปโดยไม่ใช้ const_cast ข้อผิดพลาดต่อไปนี้จะแสดงขึ้น -“การกำหนด อ่านอย่างเดียว ที่ตั้ง”
แนวทางที่ใช้ในโปรแกรมด้านล่างดังนี้ −
- ขั้นแรกให้สร้างตัวแปรคงที่ประเภท int และกำหนดขนาดที่เหมาะสม สมมติว่า "a" และค่าของมันคือ 20
- จากนั้นสร้างตัวชี้คงที่ ให้เราพูดว่า "b" ของประเภทข้อมูลเดียวกันและจัดสรรที่อยู่ของตัวแปรคงที่ของเรา "a"
- จากนั้นสร้างตัวชี้ที่สาม ให้เราพูดว่า "c" ของชนิดข้อมูล int ที่จะใช้สำหรับ const_cast
- ส่งตัวชี้คงที่ "b" ไปที่ const_cast และให้เท่ากับตัวชี้ "c"
- สุดท้าย ทำการเปลี่ยนแปลงค่าของตัวชี้ “c” สิ่งนี้จะทำการเปลี่ยนแปลงโดยอัตโนมัติในค่าที่ตัวชี้คงที่ของเรา “b” กำลังชี้อยู่
อัลกอริทึม
StartStep 1 -> ในฟังก์ชัน main() ประกาศค่าคงที่ int a=20 ประกาศค่าคงที่ตัวชี้ int* b=&a ประกาศตัวชี้ int*c =const_cast(b) กำหนด *c=40Stopก่อน> ตัวอย่าง
#includeใช้เนมสเปซ std;int main() { const int a =20; const int* b =&a; cout<<"ค่าเดิมคือ"<<*b<<"\n"; int* c=const_cast (b); *c=40; cout<<"ค่าใหม่คือ"<<*b; คืนค่า 0;} ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
ค่าเดิมคือ 20ค่าใหม่คือ 40ในที่นี้ ตัวชี้คงที่ "b" จะชี้ไปที่ตัวแปรคงที่ "a" โดยมีค่า =20 ซึ่งไม่สามารถเปลี่ยนแปลงได้ แต่ด้วยการสร้างตัวชี้ที่ไม่คงที่ตัวที่สาม “c” ของประเภทข้อมูลเดียวกันและใช้ const_cast เราสามารถเปลี่ยนค่าคงที่นั้นได้
การเปลี่ยนแปลงค่าของตัวชี้ "c" ส่งผลให้เกิดการเปลี่ยนแปลงค่าคงที่ 20 ซึ่งตัวชี้คงที่ "b" กำลังชี้ ดังนั้นก่อนใช้ const_cast ค่าเอาต์พุตคือ 20 และหลังจากใช้แล้ว ค่าเอาต์พุตคือ 40
การใช้งานอื่นๆ ของ const_cast
ในโปรแกรมใดๆ const_cast สามารถใช้ส่งข้อมูลคงที่ไปยังฟังก์ชันอื่นที่ไม่รับข้อมูลคงที่ได้
ตัวอย่าง
#includeใช้เนมสเปซ std;int change(int* p2) { return (*p2 * 10);}int main () { const int num =100; const int *p =# int *p1 =const_cast (p); ศาล <<เปลี่ยน (p1); คืนค่า 0;} ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
1000โปรแกรมต่อไปนี้แสดงวิธีที่เราสามารถส่งค่าคงที่ 100 โดยใช้ const_cast ไปยังฟังก์ชัน change() ที่ไม่ได้รับข้อมูลคงที่
ฟังก์ชัน change() รับค่าและคูณด้วย 10 แล้วคืนค่ากลับไปที่ฟังก์ชัน main() ที่สร้างผลลัพธ์สุดท้าย นั่นคือ 1,000
หากเราเรียกใช้โปรแกรมเดียวกันโดยไม่ใช้ const_cast และพยายามส่งค่าคงที่ไปยังฟังก์ชัน change() โดยตรง โปรแกรมจะแสดงข้อผิดพลาด