reinterpret_cast的

Sim*_*ity 6 c++ reinterpret-cast

没有恐惧C++:让你感觉聪明的初学者指南,在第(8)章中,它提到了以下关于reinterpret_cast

....从一个指针类型(int)转换为另一个指针(char*).因为强制转换会改变指向数据的方式,所以它被称为reinterpret_cast,而不是static_cast.*

你能在这里描述这一段吗?特别是操作方式命名的原因是什么?

谢谢.

Tob*_*ner 7

基本上,reinterpret_cast将特定位置处的位模式重新解释为不同类型.

例如,请参见http://publib.boulder.ibm.com/infocenter/lnxpcomp/v7v91/index.jsp?topic=%2Fcom.ibm.vacpp7l.doc%2Flanguage%2Fref%2Fclrc05keyword_reinterpret_cast.htm

"reinterpret_cast运算符生成一个与其参数具有相同位模式的新类型的值."

静态强制转换转换参数而不是仅重新解释它.你可以通过static_casting和int来试试这个浮动和重新解释为一个int来浮动.结果将完全不同.

  • 它不一定具有相同的位模式.标准中的`reinterpret_cast`保证很少.5.2.10/3说"`reinterpret_cast`执行的映射是实现定义的.[注意:它可能会,也可能不会产生与原始值不同的表示.]"另外,`reinterpret_cast`不能表示` int`到`float`(它可以将`int*`转换为`float*`).执行该演员的任何实现都违反了标准(5.2.10/1,最后一句),尽管它可能是一个足够普遍的扩展. (3认同)