通用的型別轉換格式
(型別說明符)表示式 (int)(a+b) a=1.4 ,b=1
其實通用的型別轉換可以細分為三種型別轉換,分別是static_cast, const_cast, reinterpret_cast.
static_cast:
不具備去除const功能
const_cast:
適用於將常指標轉換為普通指標,將常引用轉換普通引用。
1 2
1:string a = "sssssssssssss"; char *b; b = const_cast < char * > (a);
2: 常引用轉化為普通引用的例子大家能想想麼,我實在是想不出。。。。
reinterpret_cast:
該運算子的用法比較多。
操作符修改了
運算元型別,但僅僅是重新解釋了給出的物件的位元模型而沒有進行
二進位制轉換。
例如:int *n= new int ;
double *d=reinterpret_cast(n);
在進行計算以後, d 包含無用值. 這是因為 reinterpret_cast 僅僅是複製 n 的位元位到 d, 沒有進行必要的分析。
因此, 需要謹慎使用 reinterpret_cast.
static_cast 與 reinterpret_cast
static_cast
和reinterpret_cast的區別主要在於
多重繼承
,比如 1 23
4567
89
1011
class
a ;
class
b ;
class
c :
public
a,
public
b {};
那麼對於以下**: 1
2c c;
printf
(
"%p, %p, %p"
, &c,
reinterpret_cast
(&c),
static_cast
(&c));
前兩個的輸出值是相同的,最後乙個則會在原基礎上偏移4個位元組,這是因為
static_cast
計算了父子類
指標轉換的
偏移量,並將之轉換到正確的位址 (c 裡面有m_a,m_b,轉換為b*指標後指到m_b處),而reinterpret_cast卻不會做這一層轉換。
因此, 要謹慎使用 reinterpret_cast.
C 型別轉換整理
c 提供四種新式轉型 常常被稱為new style 或c style casts const cast e expression dynamic cast expression reinterpret cast expression static cast ression 各有不同的目的 const...
C 筆記整理(型別轉換)
string mygoddess mygoddess char mywife mygoddess 兄弟,編譯器報錯計算機裡無論什麼型別,最根本都是一些0和1組成的。變數的含義是通過翻譯這些0和1來告訴你們。byte s 10 int i s 型別 可以安全的轉換為 byte short,ushort...
TweenMax學習整理 特有屬性
建構函式 tweenmax target object,duration number,vars object target object 需要緩動的物件 duration number 緩動持續時間 vars object 其它引數 特有屬性29個,外掛程式17個,公共屬性10個,公共方法20個 ...