reinterpret_cast或C Style类型转换

时间:2016-01-15 06:53:48

标签: c++ casting reinterpret-cast

应优先选择reinterpret_cast而不是C风格的转换。请解释一下。

如果必须在 reinterpret_cast c样式投射

之间进行选择,哪一个应该首选

2 个答案:

答案 0 :(得分:2)

施法者应该很少使用,并且要谨慎使用,如果你写下来,当你滥用系统时,发现它会容易得多:

char *x = const_cast<char *>(some_const_char_pointer_expression);

比你伪装它:

char *x = (char *)some_const_char_pointer_expression;

所以,使用显式的,受控制的,详细的表示法,因为它鼓励你避免强制转换,并在必须使用时使用正确的精确演员。

答案 1 :(得分:0)

C风格演员更为通用。它选择&#39;从const_caststatic_castconst_caststatic_castdynamic_cast,然后dynamic_castconst_cast,最后是reinterpret_castreinterpret_castconst_cast。所以,正如你所看到的,c-cast和reinterpret_cast之间存在很大差异,因为C-cast演员首先使用静态和动态演员。

如果你用C ++编写,你应该更喜欢上面的一个强制转换而不是C风格的强制转换。它们更明确。但C风格的演员风格并不是非常非常糟糕。