C ++

没有恐惧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%2Fclrc05keyword_reinterpret_cast.htm

“reinterpret_cast运算符产生一个与它的参数具有相同位模式的新类型的值。”

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


这里没有什么特别的。 这实际上只是为了重新解释某些东西。

从标准5.3.10开始,reinterpret_cast旨在满足以下情况:

  • 指针可以显式转换为任何足够大的整数类型来保存它。
  • 整数类型或枚举类型的值可以显式转换为指针。
  • 指向函数的指针可以显式转换为指向不同类型函数的指针。
  • 指向对象的指针可以显式转换为指向不同对象类型的指针。
  • 将指向函数的指针转换为指向对象类型的指针(反之亦然)是有条件支持的。
  • 空指针值(4.10)被转换为目标类型的空指针值。
  • 如果T1和T2都是函数类型或两种对象类型,则可以将类型“指向T1类型的X的成员的指针”的类型的显式转换为不同类型的指针“指向T2类型的Y的成员的指针”。
  • 如果可以使用reinterpret_cast将“T1指针”类型的表达式显式转换为类型“指向T2的指针”,则可以将类型T1的左值表达式转换为类型“对T2的引用”。 也就是说,引用cast reinterpret_cast <T&>(x)与使用内置的&和*运算符转换* reinterpret_cast <T *>(&x)的效果相同(对于reinterpret_cast <T &&>(x)也是如此) 。

  • 尝试阅读本文:http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=134

    链接地址: http://www.djcxy.com/p/73761.html

    上一篇: c++

    下一篇: Cast from Void* to TYPE* using C++ style cast: static