dynamic_cast---動態操作
作用:將基類型別物件的引用或者指標轉換為同意繼承層次中其他型別的引用或者指標;
注意事項:dynamic_cast在執行時型別檢查。分為兩個操作:1.驗證被請求的轉換是否有效 2. 進行轉換。
為什麼驗證工作必須在執行時檢查?
答:因為引用或者指標繫結的物件的型別在編譯時是未知的,基類的指標(或者引用)可以賦值為派生類物件。
利用c++ primer(4) 647頁的例子:
說明: derivedptr是派生類指標,baseptr是基類指標,功能是將基類的指標轉換成派生類的指標,編譯的
過程中不檢查型別轉換,在執行程式的過程中才進行檢查。
基類指標轉換為派生類指標:
dynamic_cast《派生類指標》(指向基類物件的指標);
積累指標轉化為派生類引用:
dynamic_cast《派生類應用》(基類物件);
因為不存在空引用(指標是有空指標的,可以通過空指標0來判斷,這點引用不同),所以不可能對引用使用用於指標強制型別轉換的檢查策略???
dynamic cast 動態強制型別轉換
dynamic cast必須要有虛函式才能進行轉換,static cast 靜態轉換,不安全。執行時型別資訊通過運算子dynamic cast來提供。dynamic cast 用來向下轉型,將基類指標轉換為派生類指標 把基類指標轉換為派生類指標 運算子dynamic cast ptr 用來將乙個指標...
C 中的dynamic cast 操作符
c 提供了四種強制轉型的方式,除了dynamic cast是在執行中被決議,其它三種在編譯期即可被決議。聯想c 中多型的實現,可以想到既然能在執行中決議,必然和rtti有關 rtti 是 runtime type information 的縮寫,意思是 執行時型別資訊。它提供了執行時確定物件型別的方...
C 型別轉換操作符 dynamic cast
dynamic cast 顧名思義是支援動態的型別轉換,即支援執行時識別指標或引用所指向的物件。dynamic cast 用於c 類繼承多型間的轉換,分為 子類向基類的向上轉型 up cast 基類向子類的向下轉型 down cast 其中向上轉型不需要借助任何特殊的方法,只需用將子類的指標或引用賦...