02項 C++スタイルのキャストを愛用する
C++スタイルのキャストを愛用する
Cのキャストと比べたC++のキャストの利点は、目的別に複数のキャストが用意されていることと、キャストが見分けやすいことです。
static_cast
static_castは以下の場合に呼び出されます。
・数値型同士での変換
・列挙型と整数型との変換
・型変換キャスト演算子の呼び出し
・const/volatileの付加
・オブジェクトのポインタとvoidポインタとの変換
dynamic_cast
継承関係にある階層を下または横にキャストします。
dynamic_cast 内の型は、完全なクラス型へのポインターまたは参照であるか、void * である必要があります
キャスト失敗時はnullポインター(ポインターキャストの時)か例外(参照キャストの時)で示されます。
reinterpret_cast
・異なる型へのポインタ同士の変換
・ポインタと整数の変換
・ポインタと参照の変換
・参照先の変更
ができます。
static_cast以外は、できる限り使うべきではありません。
More Effective C++のほかに、下の書籍も参考にしました。
- 作者: 高橋晶,安藤敏彦,一戸優介,楠田真矢,道化師,湯朝剛介
- 出版社/メーカー: 技術評論社
- 発売日: 2013/05/18
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (11件) を見る