C++標准轉換運算符reinterpret_cast


reinterpret_cast <new_type> (expression)

reinterpret_cast運算符是用來處理無關類型之間的轉換;它會產生一個新的值,這個值會有與原始參數(expressoin)有完全相同的比特位

什么是無關類型?我沒有弄清楚,沒有找到好的文檔來說明類型之間到底都有些什么關系(除了類的繼承以外)。后半句倒是看出了reinterpret_cast的字面意思:重新解釋(類型的比特位)。我們真的可以隨意將一個類型值的比特位交給另一個類型作為它的值嗎?其實不然。

IBM的C++指南里倒是明確告訴了我們reinterpret_cast可以,或者說應該在什么地方用來作為轉換運算符:

  • 從指針類型到一個足夠大的整數類型
  • 從整數類型或者枚舉類型到指針類型
  • 從一個指向函數的指針到另一個不同類型的指向函數的指針
  • 從一個指向對象的指針到另一個不同類型的指向對象的指針
  • 從一個指向類函數成員的指針到另一個指向不同類型的函數成員的指針
  • 從一個指向類數據成員的指針到另一個指向不同類型的數據成員的指針


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM