rtti為動態識別,cobject原始碼如下:
bool cobject::iskindof(const cruntimeclsaa *pclass) const
return false;
}
定義了乙個鍊錶,即類別型錄表,在執行時識別此類是否和引數表示的類屬於同乙個類別。
鍊錶節點:
struct cruntimeclass
;
構建鍊錶,形成類別型錄表:在每個類中加入此節點,並初始化此節點,類別型錄錶即構成
//in the header file
class cview: public cwnd
;
//in the cpp file
static char _lpszcview="cview";
cruntimeclass cview::classcview=;
static afx_classinit _init_cview(&cview::classcview);
cruntimeclass *cview::getruntimeclass() const
其中afx_classinit表示;
struct afx_classinnit ;
這表示它有乙個建構函式,在c++中結構體和類也一樣,也有建構函式,
afx_classinit::afx_classinit(cruntimeclas* pnewclass)
pfirstclass始終指向自身,初始化m_pnextclass。在動態識別時,是由m_pbaseclass往上找同宗的
mfc中用兩個巨集代替以上覆雜的**
//in the header file
class cview:public cwnd
;
//in the cpp file
implement_dynamic(cview,cwnd);
至此,類別型錄網建立,可以對新建的類進行動態識別,即呼叫iskindof();
IPv6過渡技術之NAT PT技術
ipv6的應用是乙個循序漸進的過程,ipv4 海洋 與ipv6 小島 會在過渡期間共存且相互通訊,隨著時間的推移,ipv4 海洋 將逐漸變小直到最終被ipv6 小島 徹底取代。在過渡完成之前,兩個網路之前直接的網路通訊可以通過nat pt network address translation pr...
MFC六大關鍵技術之執行時型別識別
執行時型別識別 rtti 即是程式執行過程中知道某個物件屬於某個類,我們平時用c 程式設計接觸的rtti一般是編譯器的rtti,即是在新版本的vc 編譯器裡面選用 使能rtti 然後載入typeinfo.h檔案,就可以使用乙個叫typeid 的運運算元,它的地位與在c 程式設計中的sizeof 運運...
MFC中的六大關鍵技術
1 mfc程式的初始化工作 在mfc中所有的類都 於乙個基類 cobject。mfc程式初始化過程中,其實就是虛函式的呼叫的過程,分清呼叫執行的到底是哪乙個具體的虛函式,是父類的虛函式,還是基類的虛函式,都是至關重要的。2 rtti執行時型別識別 mfc程式執行過程中需要對類的型別進行動態的判斷。在...