C 中的四種型別轉換

2022-05-21 02:06:06 字數 991 閱讀 8754

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

用於將const變數轉為非const

用於各種隱式轉換,比如非const轉const,void*轉指標等

static_cast能用於多型向上轉化,如果向下轉能成功但是不安全,結果未知;

進行上行轉換(把派生類的指標或引用轉換成基類表示)是安全的;

進行下行轉換(把基類指標或引用轉換成派生類表示)時,由於沒有動態型別檢查,所以是不安全的。

char a = 'a';

int b = static_cast(a);//正確,將char型資料轉換成int型資料

double *c = new double;

void *d = static_cast(c);//正確,將double指標轉換成void指標

int e = 10;

const int f = static_cast(e);//正確,將int型資料轉換成const int型資料

const int g = 20;

int *h = static_cast(&g);//編譯錯誤,static_cast不能轉換掉g的const屬性

用於動態型別轉換。只能用於含有虛函式的類,用於類層次間的向上和向下轉化。只能轉指標或引用。向下轉化時,如果是非法的對於指標返回null,對於引用拋異常。要深入了解內部轉換的原理。

向上轉換:指的是子類向基類的轉換

向下轉換:指的是基類向子類的轉換

它通過判斷在執行到該語句的時候變數的執行時型別和要轉換的型別是否相同來判斷是否能夠進行向下轉換。

幾乎什麼都可以轉,比如將int轉指標,可能會出問題,盡量少用;

c的強制轉換表面上看起來功能強大什麼都能轉,但是轉化不夠明確,不能進行錯誤檢查,容易出錯

c 中四種型別轉換

2.型別轉換 c 中的型別轉換 四種型別裝換符 static cast 基礎資料型別的轉換和繼承中父類與子類,指標與引用裝換 dynamic cast 通常在基類和派生類之間轉換時使用 const cast 主要針對const的轉換 reinterpret cast 用於進行沒有任何關聯之間的轉換,...

C 中的四種型別轉換

static cast type id expression 1 基本型別之間的轉換 如把int轉換成char,這種轉換的安全性也要開發人員來保證。但不能用於不同指標型別之間的型別轉換。static cast更有利於檢查出危險的型別轉換。float af 3.0f double pdouble st...

c 四種型別轉換

c風格的強制型別轉換 type cast 很簡單,不管什麼型別的轉換統統是 type b type a。c 風格的型別轉換提供了4種型別轉換操作符來應對不同場合的應用。const cast,字面上理解就是去const屬性。static cast,命名上理解是靜態型別轉換。如int轉換成char。dy...