应优先选择reinterpret_cast而不是C风格的转换。请解释一下。
如果必须在 reinterpret_cast 和 c样式投射
之间进行选择,哪一个应该首选答案 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_cast
,static_cast
,const_cast
与static_cast
,dynamic_cast
,然后dynamic_cast
与const_cast
,最后是reinterpret_cast
,reinterpret_cast
与const_cast
。所以,正如你所看到的,c-cast和reinterpret_cast
之间存在很大差异,因为C-cast演员首先使用静态和动态演员。
如果你用C ++编写,你应该更喜欢上面的一个强制转换而不是C风格的强制转换。它们更明确。但C风格的演员风格并不是非常非常糟糕。