C 特有型別轉換整理

2021-06-27 01:31:08 字數 1520 閱讀 7845

通用的型別轉換格式

(型別說明符)表示式     (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

classa ;

classb ;

classc :publica,publicb {};

那麼對於以下**: 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個 ...