目錄
- C++運行時類型識別
- A.What(什么是運行時類型識別RTTI)
- B.Why(為什么需要RTTI)
- C.dynamic_cast運算符
- Why(dynamic_cast運算符的作用)
- How(如何使用dynamic_cast運算符)
- D.typeid運算符
- E.type_info類
C++運行時類型識別
A.What(什么是運行時類型識別RTTI)
一種編程技術,用于在程序運行時識別對象的類型信息。它通常用于處理動態多態對象,即基類的指針或引用指向派生類對象的情況
B.Why(為什么需要RTTI)
- 動態綁定:RTTI運算在基類的指針或引用指向派生類對象時,根據實際的對象類型來調用正確的函數
- 類型檢查:用于在執行期間對對象的類型進行檢查,判斷其是否符合預期的類型
- 類型轉換:RTTI允許基類的指針或引用轉換為派生類的指針或引用,以便調用派生類特定的屬性或方法
- 反射和元數據處理:RTTI允許在程序運行時獲取對象類型的相關信息,如類名、成員變量和成員函數等;這種反射機制可以用于實現插件系統、序列化和反序列化
C.dynamic_cast運算符
Why(dynamic_cast運算符的作用)
- 安全向下轉型:將基類的指針或引用轉為派生類的指針或引用時,可以用dynamic_cast運算符實現安全的向下轉型。它會在運行時進行類型檢查,如果轉換是有效的(基類的指針或引用指向的是派生類),那么返回派生類的指針或引用;如果轉換時無效的(基類的指針或引用沒有指向派生類),那么返回空指針
- 支持多態性:dynamic_cast運算符是多態的關鍵,使用該運算符可以根據實際對象來調用正確的函數
How(如何使用dynamic_cast運算符)
D.typeid運算符
向表達式問"你是什么類型?”
E.type_info類