const_cast:
去掉const屬性
dynamic_cast:const
int base = 1;
//int *b = &base ; //編譯錯誤
int *b = const_cast
(&base) ;
只能用於指標和引用的轉換,
可以將父類指標轉換成對應的子類指標,但是在向下轉換的時候父類一定要有虛函式,否則會編譯錯誤,
如果是轉換失敗,指標的轉換會返回null,引用的轉換會丟擲異常。
static_cast:class base ;
class derive : public base ;
void dynamic_cast_test()
可以實現基本型別之間的相互轉換,
可以實現空型別指標到其他型別指標的轉換,
可以實現子類和父類之間的互相轉換,
可以實現任何型別轉換成void型別。
reinterpret_cast:
可以實現不相關型別的轉換,簡單的實現二進位制的拷貝,並不作任何型別檢查,
所以類似於int轉向double的情況,就會出問題,因為只是簡單的將4個位元組的二進位制轉換給double,而並不滿足double的二進位制儲存方式,
在自己的編譯器測試,編譯不通過
int aa = 1;
int *a = &aa;
double *b = reinterpret_cast
(a) ;//這樣得到的結果並不是1,而是將整數型的二進位制使用浮點型格式解釋
c 中各種型別轉換
c 中的型別轉換包括隱式型別轉換和顯式型別轉換。隱式型別轉換例如在int與float相加時已經發生,顯示型別轉換主要包括以下四種 1.static cast 主要用於非多型之間的型別檢查。不提供執行時的型別檢查來確保轉換的安全性,因此效率較高。常應用於以下場景 類層次結構中,父類與子類的指標和引用之...
各種型別轉換 C
1.int轉string char buffer 50 int count value total asint sprintf s buffer,d count std string out buffer 2.string轉int std string str 123 int n atoi str....
各種型別的轉換
int i 100 long l 2001 float f 300.2 double d 12345.119 char username csdn char temp 200 char buf cstring str variant t v1 bstr t v2 一 其它資料型別轉換為字串 二 字串...