reinterpret_cast
对于这个问题是否安全,它是实现这个功能的最佳方式吗?
例如,在下面的代码中,我有一个名为ibytestream
的类,它允许从中读取uint16_t
和int16_t
。 ibytestream::next
是一个vector<unsigned char>::iterator
。
inline ibytestream& operator>>(ibytestream& stream, uint16_t& data) {
data = 0;
data |= *stream.next++;
data <<= 8;
data |= *stream.next++;
return stream;
}
inline ibytestream& operator>>(ibytestream& stream, int16_t& data) {
return stream >> reinterpret_cast<uint16_t&>(data);
}
我不想复制转换字节为整数的代码,所以我在有符号版本中使用了 reinterpret_cast
来重用无符号版本的代码。它在我的机器上运行良好,但它会在其他现代机器上一般运行吗?