C 中的dynamic cast 操作符

2021-07-11 12:00:19 字數 809 閱讀 7544

c++提供了四種強制轉型的方式,除了dynamic_cast是在執行中被決議,其它三種在編譯期即可被決議。聯想c++中多型的實現,可以想到既然能在執行中決議,必然和rtti有關(rtti 是「runtime type information」的縮寫,意思是:執行時型別資訊。它提供了執行時確定物件型別的方法),而rtti存在又存在於虛表當中。所以可以知道由dynamic_cast負責轉化的型別在其繼承鏈中存在虛函式。

基本用法

class t1

};class t2 : public class t1;

t1 t;

t1 &t1=t;

t2 &t2 = dynamic_cast(t1);/*失敗,丟擲bad_cast異常*/

t1* t1 = new t1;

t2 *t2 = dynamic_cast(t1);/*失敗,t2為空*/

t2 t;

t1 &t1=t;

t2 &t2 = dynamic_cast(t1);/*成功*/

t1* t1 = new t2;

t2 *t2 = dynamic_cast(t1);/*成功*/

C 中dynamic cast 的使用方法

分類 c 2011 12 15 14 19 5117人閱讀收藏 舉報c 編譯器iostream class object null 這是從網上摘下的例子,主要講述了 dynamic cast 的使用方法。作用 將乙個基類物件指標 或引用 cast到繼承類指標,dynamic cast會根據基類指標是...

C 中dynamic cast的使用方法

這是從網上摘下的例子,主要講述了 dynamic cast 的使用方法。作用 將乙個基類物件指標 或引用 cast到繼承類指標,dynamic cast會根據基類指標是否真正指向繼承類指標來做相應處理,即會作一定的判斷。對指標進行dynamic cast,失敗返回null,成功返回正常cast後的物...

C 中深入理解dynamic cast

一 指標型別的dynamic cast 如果一條dynamic cast語句的轉換目標是指標型別並且轉換失敗了,會返回乙個空指標,則判斷條件為0,即為false 如果轉換成功,指標為非空,則判斷條件為非零,即true。這樣做可以確保型別轉換和條件檢查在同一條表示式中完成 if derived pd ...