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

Các toán tử ép kiểu (Casting operators) trong C++

Ép kiểu (cast) là toán tử đặc biệt buộc chuyển đổi kiểu dữ liệu này sang kiểu khác. Là toán tử, ép kiểu là đơn ngôi và có cùng độ ưu tiên với các toán tử đơn ngôi khác.

Dạng ép kiểu tổng quát nhất được hầu hết trình biên dịch C++ hỗ trợ:

(type) expression

Trong đó type là kiểu dữ liệu mong muốn. C++ hỗ trợ thêm các toán tử ép kiểu khác:

  • const_cast<type>(expr) – Ghi đè tường minh const và/hoặc volatile. Kiểu đích phải giống kiểu nguồn trừ thuộc tính const/volatile. Thao tác thuộc tính const của đối tượng truyền vào, thiết lập hoặc gỡ bỏ.
  • dynamic_cast<type>(expr) – Ép kiểu tại runtime kiểm tra tính hợp lệ. Nếu không ép được, thất bại và biểu thức đánh giá thành null. Dùng cho kiểu đa hình (polymorphic), ép A* thành B* chỉ nếu đối tượng trỏ đến thực sự là B.
  • reinterpret_cast<type>(expr) – Thay đổi con trỏ thành bất kỳ kiểu con trỏ nào. Cho phép ép từ con trỏ sang kiểu nguyên và ngược lại.
  • static_cast<type>(expr) – Ép kiểu không đa hình. Ví dụ: ép con trỏ lớp cơ sở thành con trỏ lớp dẫn xuất.

Ví dụ

Xét ví dụ ép kiểu do trình biên dịch thực hiện:

#include <iostream>
using namespace std;
int main() {
    double a = 21.09399;
    float b = 10.20;
    int c;
    c = (int)a;
    cout << "Line 1 - Value of (int)a is: " << c << endl;
    c = (int)b;
    cout << "Line 2 - Value of (int)b is: " << c << endl;
    return 0;
}

Kết quả

Line 1 - Value of (int)a is: 21
Line 2 - Value of (int)b is: 10