青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

c++ RTTI (1)

Posted on 2010-01-03 17:59 rikisand 閱讀(451) 評論(0)  編輯 收藏 引用 所屬分類: 工作記錄~~everydayC/C++

項目中遇到了 RTTI 先學一部分 c++ primer內容

  1. 運行時類型識別:

程序可以使用基類的指針或者引用來檢索這些指針或引用所指對象的實際派生類型

標準庫提供了兩個操作符:

1. typeid    他可以返回指針或者引用所指向對象的實際類型

2. dynamic_cast  將基類類型的指針或引用安全的轉為派生類的指針或者引用                            

對于不帶虛函數的類在編譯時期執行,否則在運行期間執行

使用時機:

基類指針調用派生類成員函數的話,一般應使用虛函數,這樣編譯器會根據對象的實際類型來選擇正確的函數。但是某些情況下無法使用虛函數,那么此

時如果需要使用基類指針調用派生類成員函數便需要使用RTTI強制轉換,而且必須檢查轉換是否成功

(一) Dynamic_cast

dynamic_cast 如果轉換到指針失敗則返回 0 如果轉換到引用類型失敗則拋出 bad_cast 異常

對指針操作:

if(Derived *derivedPtr = dynamic_cast<Derived*> (basePtr)){

    //basePtr point to a derived object;

}else{

   //basePtr point to a base object;

}

在 if 語句中進行檢查 1.條件代碼內部知道 derivedPtr 的類型 2.不可能在測試代碼和使用代碼中加入代碼,也就是說不會在沒有測試前就使用derivedPtr 3.如果失敗外部不會使用未綁定的指針derivedPtr

對引用操作:

因為不存在空引用所以轉換失敗拋出異常

void f(const Base& b){

    try{

        const Derived &d = dynamic_cast<const Derived&> (b);

    }catch(bad_cast){

    }

}

(二) typeid

typeid(e) e是任意的表達式或者類型名

Base *bp;

Derived *dp;

//compare type at run time of two objects

if(typeid(*bp)==typeid(*dp)){

    //bp dp point to objects of the same type

}

if(typeid(*bp)==typeid(Derived)){

    //bp actually point to a Derived

}

注意typeid 測試的是 *bp 對象

//test always fails: The type of bp if pointer to Base

if(typeid(bp)==typeid(Derived)){

}

Base* 將永遠和Derived類型不同

只有typeid 的操作數是帶虛函數的類的對象的時候,才返回動態類型信息,測試指針返回指針的靜態的,編譯時類型

(三 )type_info 類

作為typeid的返回值 提供

t1==t2 t1!=t2 t.name() 的操作

 

作為應用例子,可以實現一個類型敏感的相等操作符

friend bool operator == (const base& lhs, const base& rhs){

    return typeid(lhs)==typeid(rhs) && lhs.equal(rhs);

}

這樣可以處理基類子類混合的相等判斷了

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久婷婷久久| 国产一区二区三区黄| 日韩网站免费观看| 欧美激情一区二区三区成人| 欧美成人综合网站| 欧美电影专区| 这里只有精品视频在线| 蜜臀久久久99精品久久久久久 | 欧美一区二区性| 欧美亚洲免费电影| 久久日韩精品| 欧美三级黄美女| 国产日韩欧美高清| 亚洲大片一区二区三区| 亚洲免费成人av| 亚洲天堂av高清| 久久久亚洲影院你懂的| 亚洲国产精品va在线看黑人动漫| 欧美电影在线| 亚洲在线免费观看| 久热成人在线视频| 欧美日韩综合| 国语自产精品视频在线看一大j8| 亚洲丰满在线| 亚洲欧美视频| 亚洲电影有码| 亚洲综合精品| 鲁鲁狠狠狠7777一区二区| 欧美三级午夜理伦三级中文幕 | 一区二区三区四区五区视频 | 99一区二区| 久久成人亚洲| 亚洲精品综合在线| 久久久女女女女999久久| 欧美三区美女| 最近看过的日韩成人| 久久精品免视看| 一区二区三区四区国产精品| 老司机午夜精品| 国产亚洲精品资源在线26u| 9国产精品视频| 欧美成人dvd在线视频| 亚洲一区在线看| 欧美日韩一区二区在线视频| 亚洲电影在线| 久久久夜夜夜| 欧美亚洲免费电影| 欧美午夜精品理论片a级大开眼界 欧美午夜精品理论片a级按摩 | 亚洲精品国产视频| 久久精品论坛| 国产欧美短视频| 亚洲愉拍自拍另类高清精品| 亚洲区欧美区| 欧美激情国产日韩精品一区18| 激情六月综合| 久久久久久有精品国产| 久久不见久久见免费视频1| 国产综合在线看| 久久亚洲精品中文字幕冲田杏梨| 亚洲色图自拍| 国产一区二区剧情av在线| 裸体丰满少妇做受久久99精品| 久久精品卡一| 亚洲欧美久久久久一区二区三区| 欧美一区二区三区免费观看| 日韩视频不卡| 久久国产欧美精品| 日韩视频三区| 麻豆精品在线视频| 久久久999成人| 国产精品伦子伦免费视频| 免费在线亚洲欧美| 国产精品网红福利| 在线亚洲一区| 99re6热在线精品视频播放速度| 亚洲综合视频网| 正在播放亚洲| 国产一区二区三区四区老人| 久久se精品一区精品二区| 亚洲欧美日韩精品在线| 欧美第十八页| 99国产精品久久久久久久久久 | 久久精品亚洲一区二区| 欧美一区二区三区电影在线观看| 国产精品免费看片| 久久精品人人做人人爽| 亚洲美女毛片| 午夜亚洲视频| 欧美成人精品h版在线观看| 欧美成人免费一级人片100| 久久精品国产一区二区三| 欧美日韩国产大片| 欧美www视频| 亚洲乱码国产乱码精品精98午夜| 欧美二区在线看| 亚洲制服av| 久久综合网色—综合色88| 亚洲三级电影在线观看 | 欧美日韩视频在线一区二区| 亚洲国产片色| 亚洲视频免费观看| 欧美日韩在线视频首页| 久久亚洲精品伦理| 亚洲一区欧美二区| 欧美大片第1页| 午夜精品一区二区三区在线| 国产一区999| 欧美午夜片欧美片在线观看| 久热爱精品视频线路一| 亚洲午夜高清视频| 亚洲精品1区2区| 开心色5月久久精品| 久久精品视频播放| 亚洲欧美日韩国产精品 | 亚洲自拍都市欧美小说| 亚洲高清久久久| 欧美91精品| 欧美不卡在线| 久久久噜噜噜久久中文字免| 亚洲欧美激情四射在线日 | 亚洲福利专区| 国产一区二区三区不卡在线观看| 欧美日韩在线电影| 欧美日韩一区三区四区| 欧美午夜不卡在线观看免费| 欧美偷拍另类| 国产精品日韩专区| 欧美三区视频| 国产欧美日韩视频一区二区三区 | 亚洲国产成人91精品| 久久尤物视频| 欧美国产欧美亚洲国产日韩mv天天看完整 | 亚洲一区二区三区免费在线观看 | 久久午夜精品一区二区| 久久xxxx精品视频| 亚洲丰满在线| 亚洲视频大全| 久久久免费观看视频| 欧美日韩不卡在线| 国产精品久久久免费| 国产亚洲一级| 在线中文字幕日韩| 裸体歌舞表演一区二区| 亚洲午夜久久久久久久久电影院| 欧美有码视频| 免费一级欧美片在线播放| 亚洲精品国产视频| 亚洲一区二区三区免费在线观看| 久久精品亚洲一区二区三区浴池| 欧美三级黄美女| 亚洲免费高清视频| 亚洲国产精品免费| 亚洲欧洲av一区二区| 国产精品成人播放| 亚洲永久免费| 99国产精品国产精品久久| 欧美专区日韩视频| 国产日本欧洲亚洲| 欧美一区二区三区四区夜夜大片 | 久久精品国产成人| 亚洲欧美另类在线观看| 国产精品日本精品| 午夜伦欧美伦电影理论片| 一本久久精品一区二区| 欧美日韩亚洲另类| 午夜精品视频一区| 亚洲欧美www| 曰本成人黄色| 日韩午夜在线电影| 国产在线一区二区三区四区| 久久岛国电影| 欧美精品久久久久久久久老牛影院| 日韩视频三区| 欧美自拍丝袜亚洲| 亚洲黄色有码视频| 亚洲一区欧美| 亚洲国产一区二区三区青草影视| 亚洲人成在线播放网站岛国| 国产精品区一区| 牛牛影视久久网| 国产精品久久久久9999| 美国成人毛片| 国产精品久久久久久亚洲毛片| 欧美在线视频全部完| 欧美久久久久中文字幕| 欧美一区二区免费观在线| 免费成人高清| 亚洲高清在线观看| 欧美韩国日本一区| 欧美电影资源| 国产中文一区二区| 久久久精品国产一区二区三区| 久久精品主播| 午夜精品久久久久久99热| 久久综合网hezyo| 国产精品激情| 国产美女扒开尿口久久久| 悠悠资源网亚洲青| 欧美福利一区二区| 欧美成人在线免费观看|