用于c++類集成多態間的轉換,分為: 1、子類向基類的向上轉型, 2,基類向子類的向下轉型 向上轉型不需要借助任何特殊的方法,只需要將子類的指針或引用即可
向下轉換:dynamic_cast操作符,將基類類型的指針或引用安全的轉換為派生類的指針或引用,dynamic_cast將一個幾類對象指針cast到繼承類指針,dynamic_cast會根據基類指針是否真正指向繼承類只恨來做相應出力。這也是dynamic_cast與其他轉換不同的地方dynamic_cast涉及運行時類別檢查,如果綁定到引用或指針的對象不是目標類型的對象,則dynamic_cast失敗。如果是指針類型失敗,則dynamic_cast的返回結果為0,如果是引用類型的失敗,則拋出一個bad_cast錯誤。 注意:dynamic_cast在將父類cast到子類時,父類必須要有虛函數。因為dynamic_cast運行時需要檢查RTTI信息。只有帶虛函數的類運行時才會檢查RTTI。
新聞熱點
疑難解答