忍者ブログ
[188] [187] [186] [185] [184] [183] [182] [181] [180] [179] [178]

DATE : 2017/12/12 (Tue)
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


DATE : 2006/10/16 (Mon)

C++ には、使用目的に応じた4種類のキャストがあります。

加えて C 言語形式のキャストも使用できますが、キャストの使用目的が不明瞭になるため推奨されていません。

C++ のキャストは以下の種類に分かれています。

  1. static_cast
  2. reinterpret_cast
  3. const_cast
  4. dynamic_cast

static_cast を例にとると、次のように使用します。

double d = 2.5;
int i = static_cast<int>(d);

「<>」の間にキャスト先の型を入れ、「()」内にキャスト対象の値などを入れます。

以下に使い方を簡単にまとめます。

static_cast
暗黙の型変換が存在する場合に使用するキャストです。例えば、int と double 間や継承関係を持つクラス間のポインタ、参照に使用できます。また、void 型ポインタから具体的な型のポインタへ、int 値から列挙型への変換にも使用できます。
reinterpret_cast
型だけを単純に変更し、内部のビット列は変更しない場合に使用するキャストです。具体的には、ポインタ型同士の変換に使用します。
const_cast
ポインタや参照の const 修飾子、volatile 修飾子を外すためのキャストです。
dynamic_cast
仮想関数のある継承関係を持つクラス間のポインタ、参照の型変換を動的に行うためのキャストです。 static_cast とは違い、型変換が行えない場合はキャストの結果が0(ヌル)となります(参照の型変換の場合は、std::bad_cast 例外が発生します)。なお、基底クラスに仮想関数がない場合は、dynamic_cast は使えません。

参考文献

PR
●この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
●この記事へのトラックバック
この記事にトラックバックする:
忍者ブログ [PR]
ブログ内検索
最近の状況
リンク
カレンダー
11 2017/12 01
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
T/O
(11/05)
ブログ内検索
最近の状況
リンク
カレンダー
11 2017/12 01
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
T/O
(11/05)