C 中的typeid關鍵字

2021-09-30 14:15:16 字數 749 閱讀 4416

typeid是c++中rtti(run-timetype information, 執行時型別識別)機制的組成部分,其目的是根據傳入已有的引數,來判斷引數的資料型別。

對於基本資料型別的用法與執行結果(g++ 6.3.0):

#include 

#include

using

namespace

std;

int main()

執行結果:

leo@leo-x550jd:~$ ./a.out ii

ffdd

ccpc

對於類中的用法和執行結果(g++ 6.3.0):

#include 

#include

using

namespace

std;

//基類

class base

~base(){};

};//派生類

class person : public base

~person(){};

};int main()

執行結果:

4base

4base

6person

6person

p4base

p4base

4base

其中,p開頭的是指標型別。

C 關鍵字typeid 執行時型別檢查

在揭開typeid神秘面紗之前,我們先來了解一下 rtti run time type identification,執行時型別識別 它使程式能夠獲取由基指標或引用所指向的物件的實際派生型別,即允許 用指向基類的指標或引用來操作物件 的程式能夠獲取到 這些指標或引用所指物件 的實際派生型別。在c 中...

c中的關鍵字

一 register 作用 請求編譯器盡可能的將變數存在cpu內部暫存器中,一般的變數存在記憶體中,當需要時cpu再從記憶體中把它抓取到cpu中,使用register把它存在cpu中省去了cpu從記憶體中抓取資料的時間,提高執行效率。注意 1 盡可能,因為cpu記憶體有限,不可能全放在裡面,一般把頻...

C 中struct關鍵字和class關鍵字的區別

剛開始接觸 c 看到 中有struct關鍵字,還以為是用了結構體,結果後來發現 struct 和 class 一樣都用於類的定義,於是把兩者的差別記錄於此。一句話總結 兩者均可用於定義類,唯一的區別是兩者定義的類的預設訪問許可權有差別。其實比兩者差別更重要的是,我很好奇為什麼 c 中會存在兩個用於定...