四種轉換運算符
const_cast
const_cast用來移除變量的const限定符或者volatile限定符。
常用于函數傳參用到const變量,但是該函數參數是非const類型,需要做一個類型轉換,
dynamic_cast
1、該運算符把express轉換為type類型,但是type必須是類的指針、引用或者void*
2、如果type-id是類指針類型,那麼exdivssion也必須是一個指針,如果type-id是一個引用,那麼exdivssion也必須是一個引用。
3、dynamic_cast主要用于類中的上行轉換和下行轉換,還可以用于類間交叉轉換
基類到子類的轉換,dynamic_cast有類型檢查功能,static_cast更安全。
如果基類有虛函數,使用dynamic_cast将基類轉為子類會編譯報錯。
static_cast
用法 static_cast (express)
該運算符把express轉換為type類型,但沒有運作時類型檢查來保證轉換的安全性,主要用法如下:
1、用于基類和子類之間指針或引用的轉換子類轉為基類是安全的,基類轉為子類沒有動态類型檢查,是不安全的。
2、用于基本資料類型的轉換,比如int轉為char等,這種轉換安全性需要開發人員保證。
3、把空指針轉換成目标類型的空指針。
4、把任何類型的表達式轉換成void類型。
reinterpret_cast
1、指針和整數之間的轉換
2、不通類型的指針、成員指針、引用之間的轉換