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

Ép kiểu kiểu C vs static_cast vs dynamic_cast trong C++


static_cast - Dùng cho chuyển đổi kiểu thông thường/bình thường. Cũng là cast chịu trách nhiệm cho ép kiểu ngầm và có thể gọi tường minh. Dùng cho trường hợp như float sang int, char sang int, v.v.

dynamic_cast - Dùng cho xử lý đa hình (polymorphism). Chỉ cần khi ép kiểu sang lớp dẫn xuất (derived). Dùng độc quyền trong kế thừa khi ép từ lớp cơ sở sang lớp dẫn xuất.

Ép kiểu kiểu C (Regular Cast / C-style cast) - Cast mạnh nhất trong C++ vì kết hợp const_cast, static_cast, reinterpret_cast. Nhưng không an toàn vì không dùng dynamic_cast.

Các cast khác

const_cast - Dùng để thêm/bỏ const cho biến. Hữu ích khi cần thêm/bỏ constness.

reinterpret_cast - Khó dùng nhất. Dùng để diễn giải lại mẫu bit (reinterpreting bit patterns), cấp độ rất thấp. Dùng chính cho việc biến luồng bit thô thành dữ liệu thực hoặc lưu dữ liệu trong bit thấp của con trỏ căn chỉnh (aligned pointer).