初識MFC 執行時類資訊機制

2022-08-21 04:21:14 字數 968 閱讀 7039

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