Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

const_cast trong C++

const_cast là toán tử ép kiểu (casting operator) dùng để bỏ thuộc tính const của biến/con trỏ, cho phép sửa đổi giá trị ban đầu được khai báo const.

Cú pháp

const_cast<type>(expression)

Ví dụ cơ bản

#include <iostream>
using namespace std;

int main() {
    const int a = 20;
    const int* b = &a;
    cout << "old value is " << *b << "\n";
    
    int* c = const_cast<int*>(b);
    *c = 40;
    
    cout << "new value is " << *b;
    return 0;
}

Kết quả

old value is 20
new value is 40

Giải thích: b là con trỏ const trỏ đến a const. Không thể sửa *b trực tiếp. const_cast<int*>(b) bỏ const, tạo c non-const trỏ cùng địa chỉ. Sửa *c làm thay đổi a.

⚠️ Cảnh báo

Sửa đổi đối tượng thực sự là const (không phải chỉ con trỏ const) gây undefined behavior. Chỉ dùng khi chắc chắn đối tượng gốc không phải const.

Ứng dụng khác: Truyền const cho hàm non-const

int change(int* p2) { return (*p2 * 10); }

int main() {
    const int num = 100;
    const int* p = &num;
    int* p1 = const_cast<int*>(p);
    cout << change(p1); // 1000
    return 0;
}

Hàm change nhận int* non-const. Dùng const_cast để truyền con trỏ const vào.