C キャスト 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(キャスト)
(キャスト)
29行: 29行:
  
 
*変換
 
*変換
:(int)uintLength
+
(int)uintLength
  
  
 
if文で使う前に前もってint型の変数に入れているとしたら変換だということが分かりやすいでしょうか?
 
if文で使う前に前もってint型の変数に入れているとしたら変換だということが分かりやすいでしょうか?
:int intLength = (int)uintLength;
+
int intLength = (int)uintLength;
  
  
43行: 43行:
  
  
unsigned int* puintLength;
+
unsigned int* puintLength;
puintLength = &uintLength;
+
puintLength = &uintLength;
  
 
とされたものを
 
とされたものを
50行: 50行:
  
 
*変更
 
*変更
:pintLength = (int*)puintLength;
+
pintLength = (int*)puintLength;
  
  
 
そしてconst付きのint ポインタ変数にnLimitのアドレスを紐づけて、pconstnLimitからは中身を変更できないようにした場合
 
そしてconst付きのint ポインタ変数にnLimitのアドレスを紐づけて、pconstnLimitからは中身を変更できないようにした場合
  
const int* pconstnLimit;
+
const int* pconstnLimit;
int* pnLimit;
+
int* pnLimit;
pconstnLimit = &nLimit;
+
pconstnLimit = &nLimit;
  
 
*const外し
 
*const外し
:pnLimit = (int*)pconstnLimit;
+
pnLimit = (int*)pconstnLimit;
  
  
73行: 73行:
 
*const_cast const外し
 
*const_cast const外し
 
*dynamic_cast
 
*dynamic_cast
 +
  
 
実際に新しさを感じるのはクラスとの関係が深いdynamic_castだけです。上の3つのキャストは先の説明にもあげたCからあったキャストを明示することができるようになって、このキーワードを使って明示的なcastをしようというものです。上記のキーワードを使わないとcastさせないというパターンも存在します。具体的には以下のようになります。
 
実際に新しさを感じるのはクラスとの関係が深いdynamic_castだけです。上の3つのキャストは先の説明にもあげたCからあったキャストを明示することができるようになって、このキーワードを使って明示的なcastをしようというものです。上記のキーワードを使わないとcastさせないというパターンも存在します。具体的には以下のようになります。

2014年10月20日 (月) 00:00時点における版



個人用ツール
名前空間

変種
操作
案内
ツールボックス