MFC6大技術之RTTI

2021-06-21 02:42:07 字數 1437 閱讀 3427

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程式執行過程中需要對類的型別進行動態的判斷。在...