1、執行時類資訊機制的作用
程式執行過程中,可以獲知物件的相關類的資訊
2、執行時類資訊機制的使用
2.1類必須派生自cobject類
2.2類內必須新增宣告巨集 declare_dynamic
2.3類外必須新增實現巨集 implement_dynamic
cobject::iskindof(...) -來判斷物件是否屬於某個類
3、資料結構
struct cruntimeclass
lpcstr m_lpszclassname; //類的名稱
int m_nobjectsize; //類的大小
uint m_wschema; //類的版本
//是用於動態建立機制的,在用於執行時類資訊機制時為null
cobject* (pascal* m_pfncreateobject)();
cruntimeclass* m_pbaseclass; //父類靜態變數位址(連線鍊錶)
cruntimeclass* m_pnextclass; //為null
4、巨集展開的**
5、巨集展開的各部分的作用
classcdog -靜態變數,儲存了關於類的資訊,連線乙個鍊錶
getruntimeclass -虛函式,獲取本類靜態變數位址(獲取煉表頭節點)
6、iskindof 執行過程
6.1利用cdog類的物件(yellowdog)呼叫虛函式getruntimeclass()獲取cdog類的靜態變數位址(煉表頭節點)
6.2將cdog類的靜態變數和目標進行比對,如果相等,證明物件屬於這個類,如果不相等獲取父類靜態變數迴圈和目標進行比對。
6.3只要有一次相等也能證明物件屬於這個類
6.4迴圈結束始終比對不成功,證明物件不屬於這個類
runtime_class(theclass) -返回括號中類的靜態變數位址 &theclass::classtheclass
MFC執行時型別資訊相關類
some guys seem to be unsatisfied to use mfc,they prefer to use pure win32 c but in some domains,mfc or similar framework will be a necessary option.th...
訪問執行時類的資訊
這篇小短文告訴我們如何在執行時取得乙個類物件的資訊 如果你是從類cobject派生的類且還使用了巨集declare dynamic和implement dynamic,declare dyncreate和implement dyncreate或者declare serial和implement se...
執行時型別資訊
一.向下造型 動態型別轉換 dynamic cast 用於將基類型別的指標或引用轉換為其子類型別的指標或引用,前提是子類必須從基類多型繼承,即基類包含至少乙個虛函式 class a class b public a b b a pa b b pb dynamic cast pa a ra b b r...