重新解释的目的是什么?

这个问题在这里已经有了答案:

  • 什么时候应该使用static_cast,dynamic_cast,const_cast和reinterpret_cast? 6个答案

  • reinterpret_cast<T>()强制给定的位模式被解释为你想要的类型。 这是演员中最“残酷”的。

    来自MSDN:

    允许将任何指针转换为任何其他指针类型。 还允许任何整型>类型转换为任何指针类型,反之亦然。

    滥用reinterpret_cast操作符可能很不安全。 除非期望的>转换本质上是低级别的,否则您应该使用其他演员操作符之一。 reinterpret_cast运算符可以用于转化诸如char*int* ,或> One_class*Unrelated_class* ,这是固有的不安全性。

    reinterpret_cast的结果不能安全地用于除了被转换回其原始类型以外的其他任何内容。 其他用途充其量不适用。


    以你为例

    template<typename T>
    std::istream & read(std::istream* stream, T& value){
        return stream->read(reinterpret_cast<char*>(&value), sizeof(T));
    }
    

    它用于读取给定的流并将读取的数据转换为char*以将其视为字节序列(默认情况下, char未经签名)。


    read函数只是将一些字节读入缓冲区, reinterpret_cast通过覆盖实际的值类型将任意的右值转换成这样的缓冲区。 如果流确实包含正确类型的值,则结果是该值存储在value

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

    上一篇: What is the purpose of reinterpret

    下一篇: cast not needing to perform a run