C 中的型別轉換

2021-08-29 04:16:17 字數 1406 閱讀 4047

c++中有四種型別轉換,const_cast ,static_cast,reinterpret_cast,dynamic_cast

c風格的型別轉換即強制轉換最簡單粗暴,管你是什麼型別,直接擴號擴起來了事,缺點就是**表達不夠清晰,容易造成隱患

float count =

2.0f

;int totalcount =

(int

)count;

該轉換在編譯時完成,用於解除const,volatile修飾符,只能轉換指標或者引用

//const char*轉char*

const

char

*szhello =

"hello"

;log

(const_cast<

char

*>

(szhello));

//const int轉int

const

int intheight =

100;

int&mheight = const_cast<

int&

>

(intheight)

;//取volatile int位址轉換為int*

volatile

int intweight =

200;

int*mweight = const_cast<

int*

>

(&intweight)

;

該轉換在編譯時完成,和c風格的型別轉換相似,不過要注意下面幾點

class a

;class b:public a

;class c

;int

_tmain

(int argc, _tchar* argv)

該轉換在編譯時完成,和c風格的型別轉換基本一樣,盡量不要用

//轉換物件指標為int

a *a= new a()

;int b = reinterpret_cast<

int>

(a);

該轉換在執行時完成,用於安全的在基類物件與派生類物件之間轉換,需要注意以下幾點

class a};

class b:public a

;class c:public b

;int

_tmain

(int argc, _tchar* argv)

else

if(b *b = dynamic_cast>

(c))

else

getchar()

;return0;

}

C 中的型別轉換

和goto語句一樣型別轉換的名聲似乎也是不那麼好。不過型別轉換在某些緊要關頭就顯得尤為重要,看看現有的c c 就知道,以至於你不理解轉換的作用,將是無法閱讀的。就像鈾,它能變成原子彈,但它也能用來發電,是災難還是福祉那就要看人類了。顯然型別轉換默默承受著這不公的一切。不管怎麼說c風格的型別轉換還是不...

C 中的型別轉換

1.隱式轉換 1 賦值轉換 將右值轉換為左型別,然後再賦值。2 整型提公升 c 將bool char,unsigned char,singned char,short轉換為int,int計算最快 表示式中的優先順序轉換 long double double float unsigned long 對...

C 中的型別轉換

我們知道 變數的型別定義了物件能包含的資料和參與的運算。其中一種運算被大多數型別支援,就是將變數從某一種給定的型別轉化為另外的型別。在了解型別轉換種類之前,首先牢記 型別轉換只是暫時的,原來的變數型別並不改變。在c語言中,分為兩種型別轉換 1,隱式型別轉換 2,顯示型別轉換 例如 double d ...