關於轉換

轉換指的是通過改變一個變量的類型爲別的類型從而改變該變量的表示方式。

C++標準定義了四個新的轉換符:reinterpret_cast、static_cast、dynamic_cast和const_cast,目的在於控制類(class)之間的類型轉換。
1.static_cast
static_cast可以用於類層次結構中基類和子類之間指針或引用的轉換。把子類的指針或引用轉換成基類表示是安全的,但把基類指針或引用轉換成子類指針或引用時,由於沒有動態類型檢查,所以,它是不安全的。基類和子類之間的動態類型轉換一般建議使用dynamic_cast。static_cast可以用作對象繼承之間轉換,只不過有安全隱患。
2.dynamic_cast
dynamic_cast用於對象的指針和引用,當用於多態類型轉換時,允許隱式轉換及相反的轉換操作,與static_cast的不同之處在於,而在相反的轉換過程中,dynamic_cast會檢測操作的有效性,如果返回的不是被請求的有效完整對象,則返回null,反之返回這個有效的對象,如果是引用返回無效時,則會拋出bad_cast異常。
3.const_cast
const_cast用來修改類型的const或volatile屬性,具體而言,const_cast會操縱傳遞對象的const屬性,設置或者移除該屬性。
4.reinterpret_cast
reinterpret_cast用來處理無關類型之間的轉換,可以轉換任意一個32位整數,包括所有的指針和整數。可以把任何整數轉成指針,也可以把任何指針轉成整數,以及把指針轉化爲任意類型的指針,但不能將非32位的實例轉成指針。







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章