C++のキャスト
「うちの会社にはC++のキャストを理解している人がいない!プンスカ!」とつねづね思っていたが,かくいう私も,いままで void ポインタから普通のポインタへのキャストに reinterpret_cast を使っていたというのは秘密だ。
で,本当は意図からすると static_cast を使うのが正しい(危険度は同じ)。AからBへの暗黙の型変換が存在して,とあるオブジェクトがB型の変数に格納されているんだけど,実はそれがA型であることが明らかな場合,BからAへの static_cast を使うことができる。
const/非constの違いを脇におくと,C++では任意のポインタからvoidポインタへの暗黙の型変換が可能なので,上記のシナリオが成り立つというわけ。
ちなみにCだとvoidポインタから任意のポインタに暗黙の型変換ができてしまうので,キャストすら不要である。