訪問執行時類的資訊

2021-04-19 23:29:34 字數 1124 閱讀 3490

/*

這篇小短文告訴我們如何在執行時取得乙個類物件的資訊

如果你是從類cobject派生的類且還使用了巨集declare_dynamic和implement_dynamic,

declare_dyncreate和implement_dyncreate或者declare_serial和implement_serial,

那麼cobject就可以在執行時檢查乙個類物件所屬的具體類。

當你想檢查乙個函式引數的具體型別或者想針對乙個特殊類編寫一些特殊的**時,

這個功能是很有用的。

cobject的成員方法iskindof可用於檢查乙個物件是否屬於指定的類或者它是否派生

於指定的類。iskindof的引數是乙個cruntimeclass物件,我們可以使用巨集

runtime_class(class name)的方式獲得。

*//*

使用runtime_class巨集的例子

一般情況下,我們沒有必要直接訪問cruntimeclass,其比較常用的功能是作為

iskindof的引數,以檢查具體類。

*/cruntimeclass* pclass = runtime_class( cobject );   

/*使用iskindof的例子

注意要確保要檢查的類具體執行時識別功能,即它是直接或間接的從cobject

派生且使用了巨集declare_dynamic和implement_dynamic,

declare_dyncreate和implement_dyncreate或者declare_serial和implement_serial

如果被檢查的物件屬於指定的類,iskindof會返回true。

iskindof不支援多繼承或虛基類。

*/class cperson : public cobject 

;implement_dynamic( cperson, cobject )

implement_dyncreate(cmydyncreateobj, cobject)

void memorycorruptingsnippet(bool bcorrupt)

}void somefunction(void)

delete pmyobject;

}

執行時型別資訊

一.向下造型 動態型別轉換 dynamic cast 用於將基類型別的指標或引用轉換為其子類型別的指標或引用,前提是子類必須從基類多型繼承,即基類包含至少乙個虛函式 class a class b public a b b a pa b b pb dynamic cast pa a ra b b r...

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

初識MFC 執行時類資訊機制

1 執行時類資訊機制的作用 程式執行過程中,可以獲知物件的相關類的資訊 2 執行時類資訊機制的使用 2.1類必須派生自cobject類 2.2類內必須新增宣告巨集 declare dynamic 2.3類外必須新增實現巨集 implement dynamic cobject iskindof 來判斷...