static_castはCスタイルのキャストじゃねーーーーー

仕事でみたとある文書に


static_cast:Cスタイルのキャストと同じ


とかって書いてあった(;´Д`)
全然違うっちゅねん。
double* a = 0;
int* b = static_cast(a);
ってやってみれやヽ(`Д´)ノプンプン

とか思った今日この頃。


で何が違うかっていうと
static_castはその名のとおり静的な型チェックを行うキャストです。
暗黙の型変換が許される場合に有効です。
たとえばshort->intとかね。
あとはアップキャストの場合とかも同じでおk。
それに対してreinterpret_castはCスタイルのキャストとまったく同じ。
型チェックをしないで強引にキャストするのがreinterpret_cast。
クラスライブラリ作るならなるべくreinterpret_castを使わないように設計しましょうということで。