类型转换
分类和例子
类型转换包括显式指定被转换到的类型的显式转换(explicit cast)(或称铸型(cast)),以及与之相对的隐式转换(implicit conversion)。其中,后者在一些语言中也被称为强制(coercion),被认为是一种特设多态机制。因为翻译不准确等原因,这两者之间的对应常被混淆。例如,C语言中的显式类型转换被误作为“强制转换”,这是技术上不正确的(事实上C语言的规范中完全没有“强制”的说法,但明确地有显式和隐式转换)。
一些语言中可能同时提供这些不同形式的典型的类型转换,以及其它的可能和上下文相关的类型转换,例如ISO C++的std::is_convertible使用的“转换” (页面存档备份,存于),既不是类似C语言的cast notation (页面存档备份,存于)或前缀的转换操作符形式 (页面存档备份,存于)的显式转换,也不是标准转换 (页面存档备份,存于)这样的隐式转换。
外部链接
- Casting in ABAP (页面存档备份,存于)
- Casting in Ada (页面存档备份,存于)
- Casting in C++
- C++ Reference Guide Why I hate C++ Cast Operators, by Danny Kalev
- Casting in Java (页面存档备份,存于)
- Implicit Conversions in C# (页面存档备份,存于)
- Implicit Type Casting at Cppreference.com (页面存档备份,存于)
- Static and Reinterpretation castings in C++ (页面存档备份,存于)
- Upcasting and Downcasting in F#
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.