C 11 執行時型別識別(RTTI)

2021-07-12 07:39:14 字數 755 閱讀 5617

c++11裡的rtti更好用了,參見這裡:與rtti相關的有幾個類和方法:

type_info類在標頭檔案中定義,代表了乙個c++型別的相關資訊。一般由typeid操作符返回,不能自己構造。

type_info是實現相關的,不同編譯工具鏈的實現可能不一致。

下面的**可以列印出int型別的名字:

const

std::type_info &tiint = typeid(int);

std::cout

<< "tiint.name = "

<< tiint.name() << std::endl;

type_info有下列方法:

typeid操作符在中宣告,用來在執行時獲取型別、變數、表示式的型別資訊,適用於c++基礎型別、內建類、使用者自定義類、模板類等。

它有兩種形式:

具體用法前面的示例**已有了。

type_index類在標頭檔案中宣告,它是type_info物件的乙個封裝類,可以用作關聯容器(比如map)和無序關聯容器(比如unordered_map)的索引。

下面的**(來自使用type_index來輸出一些型別資訊(除錯還是蠻有用的):

struct a 

};struct b : a {};

struct c : a {};

int main()

C 11 執行時型別識別(RTTI)

c 11裡的rtti更好用了,參見這裡 與rtti相關的有幾個類和方法 type info類在標頭檔案中定義,代表了乙個c 型別的相關資訊。一般由typeid操作符返回,不能自己構造。type info是實現相關的,不同編譯工具鏈的實現可能不一致。下面的 可以列印出int型別的名字 const st...

C 執行時型別識別(RTTI)

執行時型別識別rtti 即run time type identification 主要通過typeid和dynamic cast來實現 typeid操作符 type info實現如下 class type info 應用如下 typeid obj name 列印出指標obj指向的實際的物件型別if...

執行時型別識別(RTTI)

執行時型別識別 rtti 即是程式執行過程中知道某個物件屬於某個類,我們平時用c 程式設計接觸的rtti一般是編譯器的rtti,即是在新版本的vc 編譯器裡面選用 使能rtti 然後載入typeinfo.h檔案,就可以使用乙個叫typeid 的運運算元,它的地位與在c 程式設計中的sizeof 運運...