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 運運...