天天看點

C++ 四種轉換運算符

四種轉換運算符

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、不通類型的指針、成員指針、引用之間的轉換

c++

繼續閱讀