第11課 - 新型的類型轉換

一、C方式的強制類型轉換

C語言的強制類型轉換的代碼如圖1所示:

圖1

C語言方式強制類型轉換存在的問題

過於粗暴;任意類型之間都可以進行轉換,編譯器很難判斷其正確性。

難於定位;在源代碼中無法快速定位所有使用強制類型轉換的語句。

二、C++的新式類型轉換

C++將強制類型轉換分爲4種不同的類型。如下圖所示;

圖2

4種強制類型轉換的詳細介紹如下:

(1)static_cast強制類型轉換:用於基本類型間的轉換;不能用於基本類型指針間的轉換;用於有繼承關係類對象之間的轉換和類指針之間的轉換。

(2)cosnt_cast強制類型轉換:用於去除變量的只讀屬性;強制轉換的目標類型必須是指針或引用。

(3)reinterpret_cast強制類型轉換:用於指針類型間的強制轉換;用於整數和指針類型間的強制轉換。

(4)dynamic_cast強制類型轉換:用於有繼承類型的類指針間的轉換;用於有交叉關係的類指針間的轉換;具有類型檢查的功能;需要虛函數的支持。

三、小結

C方式的強制類型轉換

  1. 過於粗暴;
  2. 潛在的問題不易被發現
  3. 不易在代碼中定位

新式類型轉換以C++關鍵字的方式出現

  1. 編譯器能夠幫助檢查潛在的問題
  2. 非常方便的在代碼中定位
  3. 支持動態類型識別(dynamic_cast)
發佈了16 篇原創文章 · 獲贊 3 · 訪問量 4574
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章