91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中TypeId怎么用

發布時間:2021-10-21 09:57:34 來源:億速云 閱讀:158 作者:小新 欄目:編程語言

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

  • 簡介

TypeId 返回一個變量或數據類型的“類型”。

  • 使用場景

用法如下:

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

輸出如下:

int

int

  • 注意事項

如果有類A,且有虛函數,類B,C,D都是從類A派生的,且都重定義了類A中的虛函數,這時有類A的指針p,再把對象類B的對象的地址賦給指針p,則typeid(p).name()將返回的類型將是A*, 因為這里的p表示的是一個指針,該指針是類型為A的指針, 所以返回A*, 而typeid(*p).name()將返回B,因為指針p是指向類B的對象的,而*p就表示的是類B的對象的類型,所以返回B。

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

  • 相關文獻和資料

    關于typeid的錯誤(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]。這樣再運行程序的時候就不會有錯誤了。

        RTTI(運行時類型信息)會帶來額外的開銷,大部分編譯器都支持RTTI,但在默認情況下關閉此功能,需要用上面的方法打開RTTI開關。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“C++中TypeId怎么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吴忠市| 秦安县| 关岭| 鄱阳县| 乐陵市| 和林格尔县| 兰西县| 临泉县| 孙吴县| 怀远县| 密山市| 凤城市| 嘉峪关市| 神木县| 昂仁县| 平南县| 桂东县| 大同县| 三穗县| 丹东市| 曲水县| 新建县| 佛坪县| 盱眙县| 县级市| 平邑县| 兴文县| 阿鲁科尔沁旗| 布尔津县| 芮城县| 芜湖县| 宁都县| 茌平县| 余江县| 郑州市| 信丰县| 漯河市| 兴和县| 连南| 定西市| 开平市|