c 中的各種型別轉換

2021-08-09 09:26:02 字數 929 閱讀 7510

const_cast

去掉const屬性

const

int base = 1;

//int *b = &base ; //編譯錯誤

int *b = const_cast

(&base) ;

dynamic_cast

只能用於指標和引用的轉換,

可以將父類指標轉換成對應的子類指標,但是在向下轉換的時候父類一定要有虛函式,否則會編譯錯誤,

如果是轉換失敗,指標的轉換會返回null,引用的轉換會丟擲異常。

class base ;

class derive : public base ;

void dynamic_cast_test()

static_cast

可以實現基本型別之間的相互轉換,

可以實現空型別指標到其他型別指標的轉換,

可以實現子類和父類之間的互相轉換,

可以實現任何型別轉換成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 一 其它資料型別轉換為字串 二 字串...