好的大多数答案都说,reinterpret_cast是最危险的演员,可以做任何事......不是......,它可以像其他类型一样重新解释一种类型的比特。所以我的问题是为什么static_cast<char>(int(0))
有效但reinterpret_cast<char>(int(0))
没有? 是由于参数类型和目标值类型的大小差异?
reinterpret_cast<char*>(&Some_double_var)
有效。
实现如何知道哪些转换在哪些情况下有效?
由于
答案 0 :(得分:1)
reinterpret_cast
是最危险的演员,但它无能为力。它可以做最危险的事情。 reinterpret_cast
可以执行特定的事项列表。从一个标量值转换到另一个标量值不在该列表中,因为static_cast
旨在用于该标量值。 reinterpret_cast
的列表基本上是:
每种类型的演员都是为了做某件事。例如,reinterpret_cast
不会做与const_cast
相同的事情。