在里面 C ++无恐惧:让您感到聪明的初学者指南 书,以及第(8)章中,它提到了以下内容 reinterpret_cast

....从一种指针类型转换(int)到另一个(char*)。由于演员会更改数据指向的解释方式,因此称为reinterpret_cast,而不是static_cast。

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

谢谢。

有帮助吗?

解决方案

基本上,reinterpret_cast将比特模式重新诠释为特定位置的不同类型。

例如,请参见: http://publib.boulder.ibm.com/infocenter/lnxpcomp/v7v91/index.jsp?topic=%2fcom.ibm.vacpp7l.doc%2flanguage%2fref%2fref%2fref%2fclrc05keyword_reinter_reintertret_reinterpret_htm cast.htm

“ reinterpret_cast操作员产生的新类型值的值与参数具有相同的位模式。”

静态演员转换为参数,而不仅仅是重新解释它。您可以通过static_casting和int浮动和retinterpret_casting float进行尝试。结果将完全不同。

其他提示

这里没有什么花哨的。它实际上只是打算重新诠释某些内容。

从标准5.3.10来看,reinterpret_cast的目的是满足以下情况:

  • 可以将指针明确转换为足够大的任何积分类型以容纳它。
  • 可以将积分类型或枚举类型的值明确转换为指针。
  • 可以将指向函数的指针明确转换为指针转换为其他类型的函数。
  • 可以将指向对象的指针明确转换为指针转换为其他对象类型。
  • 将指针转换为函数转换为对象类型的指针,反之亦然。
  • NULL指针值(4.10)转换为目标类型的空指针值。
  • 类型“指向T1类型的指针”类型的序言可以明确转换为不同类型的“指针to type T2和T2成员的prvalue”,如果T1和T2都是函数类型或两种对象类型。
  • 如果可以使用ReinterPret_cast将类型“指向T1”的表达式明确转换为“指针”类型的“指针”类型的表达式,则可以将T1类型的LVALUE表达式施加到“ T2的引用”类型。也就是说,引用cast reinterpret_cast <t&>(x)具有与内置&and * operators的转换相同的效果 * 。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top