当您动态分配类型char *
的缓冲区并希望将其转换为特定类型时,是否应该使用类似
reinterpret_cast<int *>(char *)
或类似
static_cast<int *>(static_cast<void *>(char *))
为什么?
我个人很想使用后者,因为对我而言,它并不是对数据的“重新解释”(而只是一种分配缓冲区的机械方式),它看起来不像是一个来源与典型的reinterpret_cast
相同的错误可能是错误的,但这是正确的直觉吗?
答案 0 :(得分:4)
According to Dave Abrahams,使用链式static_cast
是强制指针类型的正确标准方法。
就个人而言,我在这些情况下使用reinterpret_cast
因为我从来不必处理使用链式static_cast
执行一项操作的架构以及使用单reinterpret_cast
执行不同操作的架构。