dynamic_cast在類的繼承關係的前提下使用,沒有繼承關係的類之間轉換會為空。其中虛函式的特性非常重要,在這裡重點體現;
如果沒有虛函式,該轉換也會發生問題。(經常在書上看到rtti特性和此相關的說明,可能就是這個問題)
1.基類轉換到子類,發生錯誤;(其實也不是錯誤,就是為空了)(安全性檢測的重要性,也就是說不要把基類轉換到子類)
2.子類轉換到基類,正確,也就是常說的向下轉換,呼叫的也是相應的虛函式;
(測試中發現問題,很簡單,用到該關鍵字就要考慮繼承的類之間是否有虛函式表)
reienterpret_cast:
可以把乙個指標轉換為非指標,同理也可以把非指標轉換為指標,很神奇,慎用之。
C 中的4個型別轉換關鍵字
1 const cast 號稱唯一具有常量性移除的轉型操作符,這個說法實在很廢話,不解釋。平時幾乎沒有用過,遇到需要這個關鍵字的時候,都是直接修改了介面的型別,也不會去用這個關鍵字,一般來說老介面設計有問題啊。明明是const的,非得轉成non const實在彆扭。2 dynamic cast 號稱...
C 轉換關鍵字
implicit為隱式的轉換 explicit為顯示的轉換 通過這種方法可以有效地驗證資料,對引數進行處理。不管是否實用,在此先記錄下來 以後回顧用 class 轉換關鍵字 set public myage private myage int32 age 整型到myage 的隱式轉換 public ...
C 的4種型別轉換關鍵字及其特點
1 reinterpret cast 重解釋轉換 reinterpret cast 轉換乙個指標為其它型別的指標。它也允許從乙個指標轉換為整數型別。反之亦然。這個操作符能夠在非相關的型別之間轉換。操作結果只是簡單的從乙個指標到別的指標的值的二進位制拷貝。在型別之間指向的內容不做任何型別的檢查和轉換。...