Các ngôn ngữ khác nhau định nghĩa các từ "diễn viên" và "chuyển đổi" khác nhau; Tôi không nghĩ rằng câu hỏi có ý nghĩa khác hơn là liên quan đến một ngôn ngữ cụ thể.
Ví dụ, trong C, thuật ngữ "cast" chỉ đề cập đúng đến một toán tử cast rõ ràng, bao gồm một tên loại trong ngoặc đơn trước biểu thức được chuyển đổi. "Chuyển đổi" chuyển đổi giá trị của một loại thành giá trị của loại khác; một số chuyển đổi được thực hiện bằng cách diễn giải lại các bit tạo nên biểu diễn, nhưng nó được định nghĩa là chuyển đổi giá trị thành giá trị. (Vâng, điều đó đúng ngay cả đối với chuyển đổi con trỏ; các loại con trỏ khác nhau có thể có các cách biểu diễn khác nhau.)
Lưu ý rằng không có thứ gọi là "diễn viên ngầm" trong C.
Một số chuyển đổi là rõ ràng, được chỉ định bởi một nhà điều hành đúc. Các trường hợp khác là ẩn và được áp dụng trong một số trường hợp nhất định khi một biểu thức của một loại được sử dụng trong ngữ cảnh cần một biểu thức của một loại khác. Việc chuyển đổi được thực hiện hoàn toàn giống nhau trong cả hai trường hợp.
Ví dụ:
double x = 1.23;
int y = (int)x; /* A cast, or explicit conversion, setting y to 1 */
int z = x; /* An implicit conversion, setting z to 1. */
C ++ cũng tương tự; nó có phôi và chuyển đổi tương tự như C, và nó cho biết thêm một ký hiệu chức năng tương đương với một biểu hiện dàn diễn viên C-phong cách, cộng với 4 từ khóa cụ thể hơn: const_cast
, dynamic_cast
, reinterpret_cast
, và static_cast
.