• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Kisser Leon

            這個kisser不太冷
            posts - 100, comments - 102, trackbacks - 0, articles - 0

            CRuntimeClass的應用

            Posted on 2007-04-06 10:10 kk 閱讀(1364) 評論(0)  編輯 收藏 引用 所屬分類: IT

            CRuntimeClassMFC中的作用很重要,因為MFC利用它來進行類的動態(tài)確定,即是通過類變量來判定該變量是否為某一類的實例。由于指針的類型是可以轉(zhuǎn)換的,所以時常會出現(xiàn)從AB的轉(zhuǎn)換導致錯誤。而在MFC的各種書籍中對CRuntimeClass的介紹是比較少的,在這里總結(jié)它的一些用法。

            1、動態(tài)確定類

            MFCCObject::IsKindOf( const CRuntimeClass* pClass ) 利用CRuntimeClass來進行判定,如果你生成的類是以CObject為基礎的,你可以使用該成員函數(shù)來判定。下面舉一個例子來加深了解。

            class CAge:public CObject

            BOOL IsAge(CObject* pO)

            {

                return pO->IsKindOf( RUNTIME_CLASS( CAge ) );

            }

            BOOL IsAge2(CAge* pO)

            {

                return pO->IsKindOf( RUNTIME_CLASS( CAge ) );

            }

            void main(void)

            {

                CObject a;

                CAge b;

                IsAge(&a);//return FALSE

                IsAge(&b);//return TRUE

                IsAge2((CAge*)&a);//return FALSE,避免強制轉(zhuǎn)換帶來的錯誤

            }

             

            2、生成類

            CObject CRuntimeClass::CreateObject(void)可以產(chǎn)生一個類變量。作用和new類似,但在某些特殊場合有獨特的作用。下面舉一個例子來加深了解。

            假定有以下幾個類定義

            class CWndA: public CWnd

            class CWndB: public CWnd

            function1()

            {

                CRuntimeClass* pC=RUNTIME_CLASS( CWndA );

                CreateWnd(pC);

            }

            CWnd* CreateWnd(CRuntimeClass* pClass)

            {

                return (CWnd*)pClass->CreateObject();

            }

            在上面例子中,CreateWnd返回的是CWnd* 其實它是一個CWndA*。你可以進行由父類到子類的強制轉(zhuǎn)換而不必要擔心出錯。使用CRuntimeClass可以代替使用switch生產(chǎn)類實例的一些繁瑣。(請好好想想它的用途,當你發(fā)現(xiàn)它的好處時,你一定會大吃一驚,M$使用宏來實現(xiàn)類的動態(tài)檢測,如果誰有興趣可以去看看MFC的源代碼。)

             

            注意:在類的定義中使用IMPLEMENT_DYNCREATE后方可生效。

             

            Google
            久久婷婷五月综合成人D啪| 久久亚洲欧美国产精品| 亚洲嫩草影院久久精品| 精品久久久久久国产91| 国产成人久久精品区一区二区| 久久久久亚洲av无码专区| 久久久久AV综合网成人 | 亚洲国产精品久久久久久| 久久99中文字幕久久| 国产99久久久久久免费看| 国产毛片久久久久久国产毛片| 国产成人无码精品久久久久免费| 国产午夜福利精品久久| 久久久久一级精品亚洲国产成人综合AV区 | 久久强奷乱码老熟女网站| 97精品国产97久久久久久免费| 久久青青草原精品国产不卡| 久久99精品久久久久久野外| 无码国内精品久久人妻| 色综合久久综精品| 少妇内射兰兰久久| 漂亮人妻被中出中文字幕久久| 国产精品成人久久久久久久| 久久青青草原亚洲av无码app| 久久精品视频一| 青春久久| 婷婷久久精品国产| 久久精品国产WWW456C0M| 99久久成人18免费网站| 2021精品国产综合久久| 色综合久久综合中文综合网| 精品国产日韩久久亚洲| 日韩十八禁一区二区久久| 精品一久久香蕉国产线看播放| 麻豆精品久久久一区二区| 996久久国产精品线观看| 国产午夜福利精品久久2021 | 久久精品中文闷骚内射| 色欲久久久天天天综合网精品| 无码国内精品久久人妻| 久久久久国产精品熟女影院|