static_cast/dynamic_cast/reinterpret_cast/const_cast

static_cast

  • 對類的指針只能轉換有繼承關系的類。對普通的指針來說只能在void*和其他指針之間轉換。它還可轉換簡單的類型,比如intchar等。不能提供數字到指針的轉換。不能提供不同類型指針之間的轉換比如int*char*

dynamic_cast

  • 提供安全的轉換如果兩個指針不存在繼承關系轉換會失敗返回空指針,如果你提供一個錯誤的指針那樣會發生內存訪問異常,因為它會去比較兩個類型的虛函數表。虛函數表的指針一般放在對象指針最開始的四字節中,你去訪問一個錯誤的地址這樣肯定會發生異常。

reinterpret_cast

  • 提供數字到指針間的轉換比如void*int。提供不同類型指針的強制轉換比如int*char*。不提供intchar的轉換。但是處理類指針轉換的時候不能用它,它不會自動的調整指針。

const_cast

  • 把一個const指針轉為非const,最好不要用這個轉換。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • C++中的類型轉換分為兩種:隱式類型轉換;顯式類型轉換。 而對于隱式變換,在很多時候,不經意間就發生了,比如int...
    DayDayUpppppp閱讀 14,640評論 6 26
  • __block和__weak修飾符的區別其實是挺明顯的:1.__block不管是ARC還是MRC模式下都可以使用,...
    LZM輪回閱讀 3,374評論 0 6
  • 轉至元數據結尾創建: 董瀟偉,最新修改于: 十二月 23, 2016 轉至元數據起始第一章:isa和Class一....
    40c0490e5268閱讀 1,788評論 0 9
  • ———————————————回答好下面的足夠了---------------------------------...
    恒愛DE問候閱讀 1,762評論 0 4
  • 文/07 寒霞霧靄十里茫 樓臺遠處靜謐藏 枯枝風嘯殘葉黃 不見路人踏清霜 …… 17.10.29晨6點
    723edf844d12閱讀 234評論 3 8