Computer >> Máy Tính >  >> Lập trình >> C ++

Các toán tử truyền trong C ++ là gì?


Một phép ép kiểu là một toán tử đặc biệt buộc một kiểu dữ liệu được chuyển đổi thành một kiểu dữ liệu khác. Là một toán tử, một phép ép kiểu là một ngôi và có cùng quyền ưu tiên với bất kỳ toán tử một ngôi nào khác.

Diễn viên chung nhất được hầu hết các trình biên dịch C ++ hỗ trợ như sau -

(type) expression

Trong đó type là kiểu dữ liệu mong muốn. Có các toán tử truyền khác được hỗ trợ bởi C ++, chúng được liệt kê bên dưới -

  • const_cast (expr) - Toán tử const_cast được sử dụng để ghi đè rõ ràng const và / hoặc biến động trong một ép kiểu. Loại đích phải giống với loại nguồn ngoại trừ việc thay đổi các thuộc tính const hoặc biến động của nó. Kiểu ép kiểu này sử dụng thuộc tính const của đối tượng đã truyền, có thể được thiết lập hoặc loại bỏ.
  • dynamic_cast (expr) - dynamic_cast thực hiện truyền trong thời gian chạy để xác minh tính hợp lệ của quá trình truyền. Nếu không thể thực hiện ép kiểu, quá trình ép kiểu không thành công và biểu thức đánh giá là null. Dynamic_cast thực hiện ép kiểu trên các kiểu đa hình và chỉ có thể ép kiểu con trỏ A * thành con trỏ B * nếu đối tượng được trỏ đến thực sự là đối tượng B.
  • reinterpret_cast (expr) - Toán tử reinterpret_cast thay đổi một con trỏ thành bất kỳ loại con trỏ nào khác. Nó cũng cho phép truyền từ con trỏ sang kiểu số nguyên và ngược lại.
  • static_cast (expr) - Toán tử static_cast thực hiện ép kiểu không đa hình. Ví dụ:nó có thể được sử dụng để chuyển một con trỏ lớp cơ sở thành một con trỏ lớp dẫn xuất.

Ví dụ

Những phôi này rất cụ thể. Hãy xem xét một ví dụ với ép kiểu được thực thi bởi trình biên dịch -

#include <iostream>
using namespace std;
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;
}

Đầu ra

Điều này sẽ đưa ra kết quả -

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