Với nhiệm vụ là hiển thị hoạt động của const_cast trong C ++.
const_cast là một trong những toán tử ép kiểu. Nó được sử dụng để thay đổi giá trị không đổi của bất kỳ đối tượng nào hoặc có thể nói nó được sử dụng để loại bỏ tính chất không đổi của bất kỳ đối tượng nào.
const_cast có thể được sử dụng trong các chương trình có bất kỳ đối tượng nào với một số giá trị không đổi mà đôi khi cần được thay đổi tại một số điểm.
Cú pháp
Cú pháp như sau -
const_cast(biểu thức)
Ví dụ
Đầu vào:x =50const int * y =&xcout <<"giá trị cũ là" <<* y <<"\ n"; int * z =const_cast(y); * z =100; cout <<"giá trị mới là" <<* y; Đầu ra:giá trị cũ là 50 Giá trị mới là 100
Ví dụ sau cho thấy cách sử dụng cơ bản của const_cast. Ở đây chúng ta đã khai báo một biến hằng số "x" kiểu int đã được gán giá trị là 50 và một con trỏ hằng khác "y" kiểu int trỏ vào biến "x".
Con trỏ thứ ba phải được tạo để sử dụng const_cast và ở đây chúng tôi đã tạo con trỏ "z" có cùng kiểu dữ liệu, nghĩa là int.
Vì vậy, khi chúng ta chuyển con trỏ hằng số “y”, con trỏ đó trỏ đến biến hằng số “x” vào const_cast và gán một giá trị cho con trỏ z, chúng ta có thể thực hiện các thay đổi đối với giá trị của con trỏ hằng số “y” của chúng ta.
Bằng cách này, chúng tôi có thể thay đổi giá trị không đổi từ 50 thành 100 bằng cách sử dụng const_cast.
Nếu chúng tôi cố gắng thay đổi giá trị của “x” mà con trỏ “y” đang trỏ đến mà không sử dụng const_cast, thì lỗi sau sẽ được hiển thị- “gán chỉ đọc vị trí ”
Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau -
- Đầu tiên, hãy tạo một biến không đổi có kiểu int và cung cấp cho nó một số kích thước phù hợp, giả sử “a” và giá trị của nó là 20.
- Sau đó, tạo một con trỏ hằng số, chúng ta hãy nói “b” của cùng một kiểu dữ liệu và cấp cho nó địa chỉ của biến hằng số “a” của chúng ta.
- Sau đó, tạo một con trỏ thứ ba, chúng ta hãy nói “c” của kiểu dữ liệu int sẽ được sử dụng cho const_cast.
- Bây giờ, hãy chuyển con trỏ hằng số “b” của chúng ta vào const_cast và giữ nó ngang bằng với con trỏ “c” của chúng ta.
- Cuối cùng, thực hiện các thay đổi trong giá trị của con trỏ “c” của chúng ta. Thao tác này sẽ tự động thực hiện các thay đổi về giá trị mà con trỏ hằng số “b” của chúng ta đang trỏ đến.
Thuật toán
StartStep 1 -> Trong hàm main () Khai báo một hằng số int a =20 Khai báo một con trỏ hằng int * b =&a Khai báo một con trỏ int * c =const_cast(b) Gán * c =40Stop Ví dụ
#includeusing namespace std; int main () {const int a =20; const int * b =&a; cout <<"giá trị cũ là" <<* b <<"\ n"; int * c =const_cast (b); * c =40; cout <<"giá trị mới là" <<* b; trả về 0;} Đầu ra
Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -
giá trị cũ là 20 giá trị mới là 40Ở đây, con trỏ hằng số “b” được trỏ vào biến hằng số “a” có giá trị =20 không thay đổi được. Nhưng bằng cách tạo một con trỏ không hằng số thứ ba “c” của cùng một kiểu dữ liệu và sử dụng const_cast, chúng tôi có thể thay đổi giá trị không đổi đó.
Sự thay đổi giá trị của con trỏ “c” dẫn đến sự thay đổi của giá trị không đổi 20 mà tại đó con trỏ “b” đang trỏ. Do đó, trước khi sử dụng const_cast, giá trị đầu ra là 20 và sau khi sử dụng nó, giá trị đầu ra là 40.
Các cách sử dụng khác của const_cast
Trong bất kỳ chương trình nào, const_cast có thể được sử dụng để truyền dữ liệu hằng số cho một hàm khác không chấp nhận dữ liệu hằng số.
Ví dụ
#includeusing namespace std; int change (int * p2) {return (* p2 * 10);} int main () {const int num =100; const int * p =# int * p1 =const_cast (p); cout < Đầu ra
Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -
1000Chương trình sau đây cho thấy cách chúng ta có thể chuyển một giá trị không đổi là 100 bằng cách sử dụng const_cast vào hàm change () không nhận bất kỳ dữ liệu hằng số nào.
Hàm change () nhận giá trị và nhân nó với 10 và trả nó trở lại hàm main () tạo ra kết quả cuối cùng, nghĩa là 1000.
Nếu chúng ta chạy cùng một chương trình mà không có const_cast và cố gắng truyền trực tiếp giá trị hằng số vào hàm change (), nó sẽ hiển thị lỗi.