reinterpret_cast <int *>(char *)与static_cast <int *>(static_cast <void *>(char *)) - 要使用哪个?</void *> </int *> </int *>

时间:2011-10-22 01:47:38

标签: c++ casting

当您动态分配类型char *的缓冲区并希望将其转换为特定类型时,是否应该使用类似

的内容
reinterpret_cast<int *>(char *)

或类似

static_cast<int *>(static_cast<void *>(char *))

为什么?

我个人很想使用后者,因为对我而言,它并不是对数据的“重新解释”(而只是一种分配缓冲区的机械方式),它看起来不像是一个来源与典型的reinterpret_cast相同的错误可能是错误的,但这是正确的直觉吗?

1 个答案:

答案 0 :(得分:4)

According to Dave Abrahams,使用链式static_cast是强制指针类型的正确标准方法。

就个人而言,我在这些情况下使用reinterpret_cast因为我从来不必处理使用链式static_cast执行一项操作的架构以及使用单reinterpret_cast执行不同操作的架构。