重新解释的目的是什么?
这个问题在这里已经有了答案:
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
。