reinterpret_cast() static_cast() const_cast() dynamic_cast()

reinterpret_cast<T>()

  • 從指針類型到一個足夠大的整數類型
  • 從整數類型或者枚舉類型到指針類型
  • 從一個指向函數的指針到另一個不同類型的指向函數的指針
  • 從一個指向對象的指針到另一個不同類型的指向對象的指針
  • 從一個指向類函數成員的指針到另一個指向不同類型的函數成員的指針
  • 從一個指向類數據成員的指針到另一個指向不同類型的數據成員的指針
  • 以在任意指針之間進行互相轉換,即使這些指針所指的內容是毫無關係的,也就是說一下語句,編譯器是不會報錯的,但是對於程序來說也是毫無意義可言的,只會造成程序崩潰:

static_cast<T>()

基礎類型和對象的轉換,如int long之間或子類像上轉換

 const_cast<T>()

我們可能調用了一個參數不是const的函數,而我們要傳進去的實際參數確實const的,但是我們知道這個函數是不會對參數做修改的。於是我們就需要使用const_cast去除const限定,以便函數能夠接受這個實際參數。

 dynamic_cast<T>()

類似static_cast轉換,允許相同子類中轉換,轉換失敗返回null

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