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

Const หล่อใน C ++


กำหนดให้แสดงการทำงานของ 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() โดยตรง โปรแกรมจะแสดงข้อผิดพลาด