dynamic_cast是與繼承相關的型別轉換關鍵字
dynamic_cast要求相關的類中必須有虛函式
用於直接或者間接繼承關係的指標(引用)之間
-指標:
轉換成功:得到目標型別的指標
轉換失敗:得到乙個空指標
-引用:
轉換成功:得到目標型別的引用
轉換失敗:得到乙個異常操作資訊
編譯器會檢查dynamic_cast的使用是否正確
型別轉換的結果只可能在執行階段才能得到
進一步改進:使用dynamic_cast關鍵字
為什麼使用了dynamic_cast關鍵字後,編譯還會出錯?再看一下上邊的規則,是因為類中沒有虛函式。這個地方我們還需要去定義乙個虛函式嗎?完全沒有必要,根據工程經驗,但凡乙個類被定義為父類,虛構函式就定義為虛函式。
假設此時p就指向乙個父類物件,即
小結:new/delete會觸發建構函式或者析構函式的呼叫
建構函式不能成為虛函式
析構函式可以成為虛函式(可以避免記憶體洩露,還有乙個好處使用dynamic_cast)
建構函式和析構函式中都無法產生多型行為
dynamic_cast是與繼承相關的專用轉換關鍵字
關於強制型別轉換
var dump 0 null false var dump 0 0 true var dump 0 false var dump 0 false true var dump 0 null true var dump 0 0 true var dump 0 true var dump 0 false...
關於強制型別轉換
思考 includeint main int ptr1 int a 1 int ptr2 int int a 1 printf x,x n ptr1 1 ptr2 return 0 輸出 4,2000000 我們先看第乙個我們知道ptr1 n ptr1 n 所以ptr1 1 實際上就說ptr所指的前...
matlab中強制型別轉換 型別轉換
上一期提到 隱式型別強制轉換 implicit type coercion 隱式型別強制轉換會造成意外。為了避免出現意外,c 提供了明式型別轉換,允許程式設計師通過使用型別轉換操作 cast operator 主動轉換資料的型別。型別轉換操作也可直接稱為型別轉換 type conversion ty...