Trang tài liệu
Khóa học C++ nền tảng
Chương 10. Các khái niệm về ngôn ngữ
Const_cast

Const_cast

const_cast là một kiểu ép kiểu trong C++ cho phép bạn loại bỏ hoặc thêm hằng số vào một biến. Nói cách khác, nó cho phép bạn sửa đổi một const hoặc volatile, hoặc thay đổi một con trỏ hoặc tham chiếu thành một kiểu const hoặc volatile. Điều này hữu ích trong một số tình huống nhất định khi bạn cần chuyển một biến const làm đối số hoặc khi tham số hàm yêu cầu loại không phải const, nhưng bạn muốn đảm bảo rằng biến đó không đổi trong toàn bộ mã code.

Hãy nhớ rằng việc sử dụng const_cast để sửa đổi một biến const thực sự có thể dẫn đến hành vi không xác định, vì vậy tốt nhất là chỉ sử dụng tính năng này khi thực sự cần thiết.

Ví dụ

Đây là một ví dụ mã code cho thấy cách sử dụng const_cast:

#include <iostream>

void modifyVariable(int* ptr) {
    *ptr = 42;
}

int main() {
    const int original_value = 10;
    int* non_const_value_ptr = const_cast<int*>(&original_value);
    std::cout << "Original value: " << original_value << std::endl;

    modifyVariable(non_const_value_ptr);
    std::cout << "Modified value: " << *non_const_value_ptr << std::endl;

    return 0;
}

Trong ví dụ này, trước tiên chúng ta tạo một biến const, original_value. Sau đó, sử dụng const_cast để loại bỏ hằng số của biến và gán nó cho một con trỏ không phải là const, non_const_value_ptr. Hàm modVariable lấy một int* làm đối số và sửa đổi giá trị được chỉ bởi con trỏ, điều này sẽ không thể thực hiện được nếu chúng ta chuyển trực tiếp const int ban đầu. Cuối cùng, chúng tôi in giá trị gốc và *non_const_value_ptr, cho biết giá trị đã được sửa đổi bằng cách sử dụng const_cast.

Xin lưu ý rằng ví dụ này đi kèm với một số rủi ro vì nó liên quan đến hành vi không xác định.