Static Cast
static_cast là một trong những toán tử ép kiểu trong C++ cho phép bạn chuyển đổi giữa các loại dữ liệu khác nhau, chẳng hạn như số nguyên và số float hoặc giữa các loại con trỏ. Loại truyền này thực hiện kiểm tra thời gian biên dịch và đưa ra lỗi nếu không thể chuyển đổi hợp lệ giữa các loại đã cho. static_cast nói chung an toàn hơn so với ép kiểu C vì nó không thực hiện diễn giải lại dữ liệu không an toàn và cho phép kiểm tra kiểu tốt hơn.
Cú pháp
Cú pháp của static_cast như sau:
static_cast<new_type>(expression)
Ví dụ
- Chuyển đổi giữa các kiểu dữ liệu cơ bản:
int i = 42;
float f = static_cast<float>(i); // Chuyển đổi số nguyên i thành float f
- Con trỏ casting của các loại đối tượng khác nhau trong hệ thống phân cấp thừa kế:
class Base { /* ... */ };
class Derived : public Base { /* ... */ };
Base *bPtr = new Derived;
Derived *dPtr = static_cast<Derived *>(bPtr); // Chuyển đổi con trỏ Cơ sở bPtr thành Con trỏ dẫn xuất dPtr
- Chuyển đổi một số nguyên thành liệt kê:
enum Color { RED, GREEN, BLUE };
int value = 1;
Color color = static_cast<Color>(value); // Chuyển đổi giá trị số nguyên thành kiểu liệt kê Màu tương ứng
Hãy nhớ rằng nên thận trọng khi sử dụng static_cast khi truyền con trỏ giữa các loại đối tượng khác nhau. Nếu loại ban đầu của con trỏ không khớp với loại mục tiêu, kết quả của phép truyền có thể không chính xác hoặc gây ra hành vi không mong muốn.