五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

RTTI機制

2023-04-01 22:32 作者:xhy2023  | 我要投稿

C++是一種靜態(tài)類型語言。其數(shù)據(jù)類型是在編譯期就確定的,不能在運行時更改。然而由于面向?qū)ο蟪绦蛟O(shè)計中多態(tài)性的要求,C++中的指針或引用(Reference)本身的類型,可能與它實際代表(指向或引用)的類型并不一致。有時我們需要將一個多態(tài)指針轉(zhuǎn)換為其實際指向?qū)ο蟮念愋?,就需要知道運行時的類型信息,于是產(chǎn)生了運行時類型識別的要求。C++要想獲得運行時類型信息,可以通過RTTI機制。RTTI(Run Time Type Identification)即通過運行時類型識別,程序能夠通過基類的指針或引用獲知這些指針或引用所指的對象的實際派生類型。本來基類指針的作用就是使代碼能夠獲得一個統(tǒng)一的接口,現(xiàn)在要逆過來,通過這個基類指針來知道它的實際派生類型,即通過一堆if來判斷。RTTI提供了兩個非常有用的操作符:typeid 和 dynamic_cast:

  • typeid:返回指針或引用所指對象的實際類型。它返回一個對type_info類對象的引用,要使用typeid必須使用頭文件<typeinfo>。對非引用類型,typeid是在編譯時期識別的,只有引用類型才會在運行時識別。運行時獲知變量類型名稱,可以使用 typeid(變量).name(),需要注意不是所有編譯器都輸出"int"、"float"等之類的名稱,對于這類的編譯器可以這樣使用:

下面舉一個例子:

  • dynamic_cast:只能用于含有虛函數(shù)的類轉(zhuǎn)換,用于類向上和向下轉(zhuǎn)換。dynamic_cast可以做類之間上下轉(zhuǎn)換,轉(zhuǎn)換的時候會進行類型檢查,類型相等成功轉(zhuǎn)換,類型不等
    轉(zhuǎn)換失敗。運用
    RTTI技術(shù),RTTI”Runtime Type Information”的縮寫,意思是運行時類型信息,它提供了運行時確定對象類型的方法。在c++層面主要體現(xiàn)在dynamic_casttypeid。將一個基類對象指針(或引用)轉(zhuǎn)換到繼承類指針,dynamic_cast會根據(jù)基類指針是否真正指向繼承類指針來做相應(yīng)處理。如果一條dynamic_cast語句的轉(zhuǎn)換目標是指針類型并且轉(zhuǎn)換失敗了,會返回一個空指針。如果基類或者子類沒有任何虛函數(shù)(如果基類有虛函數(shù)表,子類當然是自動繼承了該表),當他們作為dynamic_cast的源類型進行轉(zhuǎn)換時,編譯會失敗。


RTTI機制的評論 (共 條)

分享到微博請遵守國家法律
通许县| 谢通门县| 新民市| 自贡市| 平乡县| 泰州市| 府谷县| 客服| 忻州市| 永清县| 巴林右旗| 渭源县| 巴林左旗| 南丰县| 宁乡县| 锦屏县| 康乐县| 濉溪县| 长岭县| 澄江县| 佛山市| 五华县| 武冈市| 会东县| 平安县| 嘉义县| 前郭尔| 苗栗县| 阿勒泰市| 东兰县| 灌阳县| 乌鲁木齐市| 和林格尔县| 延安市| 宣汉县| 鹤山市| 丹阳市| 东丰县| 嘉峪关市| 洛扎县| 长沙市|