c++中有四種型別轉換,const_cast ,static_cast,reinterpret_cast,dynamic_cast
c風格的型別轉換即強制轉換最簡單粗暴,管你是什麼型別,直接擴號擴起來了事,缺點就是**表達不夠清晰,容易造成隱患
該轉換在編譯時完成,用於解除const,volatile修飾符,只能轉換指標或者引用float count =
2.0f
;int totalcount =
(int
)count;
該轉換在編譯時完成,和c風格的型別轉換相似,不過要注意下面幾點//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)
該轉換在執行時完成,用於安全的在基類物件與派生類物件之間轉換,需要注意以下幾點//轉換物件指標為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 ...