C++基礎知識:動態類型識別


1.動態類型指的是基類指針所指向的對象的實際類型

2.C++中的多態根據實際的對象類型調用對應的虛函數
(1)可以在基類中定義虛函數返回具體的類型信息
(2)所有的派生類都必須實現類型相關的虛函數
(3)每個類中的類型虛函數都需要不同的實現

3.利用多態進行動態類型識別

4.使用虛函數進行動態類型識別的缺陷
-必須從基類開始提供類型虛函數
-所有的派生類都必須重寫類型虛函數
-每個派生類的類型ID必須唯一
-利用虛函數進行動態類型識別的方法可以滿足工程的需要,但是維護性會隨着派生類的增多而成指數級增加。

5.新的關鍵字dynamic_cast
-dynamic_cast是C++中的新型轉換關鍵字
-dynamic_cast主要用於基類和派生類之間的轉換
-dynamic_cast要求使用的目標對象類型是多態的
即:所在類族至少有一個虛函數
 -用於指針轉換時,轉換失敗返回空指針
 -用於引用轉換時,轉換失敗將引發bad_cast異常

利用dynamic_cast進行動態類型識別:

dynamic_cast的優勢
  -不用顯示的聲明和定義類型虛函數
  -不用為類族中的每個類分配類型ID
dynamic_cast的缺陷
  只能用於具有虛函數的類族

 

6.C++提供了typeid關鍵字用於動態獲取類型信息
typeid關鍵字返回對應參數的類型信息
typeid返回一個type_info類對象
當typeid的參數為NULL時,拋出bad_typeid異常
type_info類的使用需要包含<typeinfo>

 

  typeid關鍵字的使用:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM