类型转换
外观
在计算机科学,特别是在程序设计语言中,类型转换(英語:type conversion)指将数据从一种类型转换到另一种类型的过程。一个简单的例子是将整数转换成浮点数。
分类和例子
[编辑]类型转换包括显式指定被转换到的类型的显式转换(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#