C++中TypeId怎么用-創(chuàng)新互聯(lián)

這篇文章主要介紹了C++中TypeId怎么用,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)建站-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比趙縣網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式趙縣網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋趙縣地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。
  • 簡(jiǎn)介

TypeId 返回一個(gè)變量或數(shù)據(jù)類(lèi)型的“類(lèi)型”。

  • 使用場(chǎng)景

用法如下:

    cout<<typeid(int).name()<<endl;    
    int a;
    cout<<typeid(a).name()<<endl;

輸出如下:

int

int

  • 注意事項(xiàng)

如果有類(lèi)A,且有虛函數(shù),類(lèi)B,C,D都是從類(lèi)A派生的,且都重定義了類(lèi)A中的虛函數(shù),這時(shí)有類(lèi)A的指針p,再把對(duì)象類(lèi)B的對(duì)象的地址賦給指針p,則typeid(p).name()將返回的類(lèi)型將是A*, 因?yàn)檫@里的p表示的是一個(gè)指針,該指針是類(lèi)型為A的指針, 所以返回A*, 而typeid(*p).name()將返回B,因?yàn)橹羔榩是指向類(lèi)B的對(duì)象的,而*p就表示的是類(lèi)B的對(duì)象的類(lèi)型,所以返回B。

比如有類(lèi) A,其中定義有虛函數(shù),而類(lèi)B,C,D都是從類(lèi)A派生而來(lái)的且重定義了該虛函數(shù),這時(shí)有個(gè)類(lèi)A的指針p和p1,按照虛函數(shù)的原理,基類(lèi)的指針可以指向任何派生類(lèi)的對(duì)象,在這時(shí)就有可能需要比較兩個(gè)指針是否指向同一個(gè)對(duì)象,這時(shí)就可以這樣使用typeid了,typeid(*p)= =typeid(*p1);這里要注意的是typeid(*p)與typeid(p)是指的不同的對(duì)象類(lèi)型,typeid(p)表示的是p的類(lèi)型,在這里p是一個(gè)指針,這個(gè)指針指向的是類(lèi)A的對(duì)象,所以p的類(lèi)型是A*, 而typeid(*p)則不一樣, *p表示的是指針p實(shí)際所指的對(duì)象的類(lèi)型, 比如這里的指針p指向派生類(lèi)B,則typeid(*p)的類(lèi)型為B。所以在測(cè)試兩個(gè)指針的類(lèi)型是否是相等時(shí)應(yīng)使用*p,即typeid(*p)= =typeid(*p1)。如果是typeid(p)= =typeid(p1)的話,則無(wú)論指針p和p1指向的什么派生類(lèi)對(duì)象,他們都是相等的,因?yàn)槎际茿 *的類(lèi)型。

  • 相關(guān)文獻(xiàn)和資料

   關(guān)于typeid的錯(cuò)誤(warning C4541: 'typeid' used on polymorphic type 'class A' with /GR-; unpredictable behavior may result):

    解決方法:在vc6中. Project - settings... - C/C++ ,在Category那里選 C++ Language,再在下邊勾上 Enable Run-Time Type Information[RTTI]。這樣再運(yùn)行程序的時(shí)候就不會(huì)有錯(cuò)誤了。

        RTTI(運(yùn)行時(shí)類(lèi)型信息)會(huì)帶來(lái)額外的開(kāi)銷(xiāo),大部分編譯器都支持RTTI,但在默認(rèn)情況下關(guān)閉此功能,需要用上面的方法打開(kāi)RTTI開(kāi)關(guān)。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“C++中TypeId怎么用”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站題目:C++中TypeId怎么用-創(chuàng)新互聯(lián)
本文路徑:http://muchs.cn/article22/coehcc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、企業(yè)網(wǎng)站制作服務(wù)器托管、定制開(kāi)發(fā)做網(wǎng)站、網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司