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

            zhgw01

            Handle Class 和 Interface Class

            這兩者都是為了降低文件間的編譯依存

            1.編譯依存
            #include"file1.h"
            #include
            "file2.h"

            class class_name
            {
             member1 m_m1;
             member2 m_m2;
            public:
             member1 get_member_1()
            const{};
             member2 get_member_2()
            const{};
            }
            ;
            假設(shè)上面的頭文件為file.h,當(dāng)file1.h或者file2.h發(fā)生變化,或者file中的class_name的實(shí)現(xiàn)發(fā)生變化時(shí),所有包含file.h的文件都得重新編譯,當(dāng)file.h被很多文件包含時(shí),即使只是對(duì)class_name做了小小的改動(dòng),也要花費(fèi)大量的編譯時(shí)間。

            2. Handle class (句柄類)
            handle classs 只是提高了所有的接口,同時(shí)包含了一個(gè)指向真正實(shí)現(xiàn)類的指針。真正的實(shí)現(xiàn)類包含在另外一個(gè)文件中,當(dāng)要修改這個(gè)類時(shí),只有file.h會(huì)引起重編譯,而包含file.h的其它文件不會(huì)引起重編譯
            #include"file1.h" //contain member1
            #include
            "file2.h" //contain member2
               #include"implement.h"

            class class_name
            {
              class_impl
            * implement; //一般會(huì)用shared pointer

            public:
             member1 get_member_1()
            const
             
            {
               
            return implement->get_member_1();
             }


             member2 get_member_2() 
            const
             
            {
               
            return implement->get_member_2();
             }

            }
            ;

            下面的是implement.h的實(shí)現(xiàn)

            class class_impl
            {
              member1 m_1;
              member2 m_2;
            public;
              member1 get_member_1()
            const {}
              member2 get_member_2()
            const {}
            }
            ;

            2.Interface class
            這是制作handle class的另外一種方法
            首先聲明的class是抽象類,一般里面的接口都是純虛函數(shù),就像Java的Interface
            然后提高一個(gè)static的create函數(shù)(就是工廠方法),這個(gè)函數(shù)返回改抽象類的某個(gè)具體子類的對(duì)象,函數(shù)聲明中的返回值仍然是該抽象類的指針或引用。

            具體子類在另外一個(gè)文件中聲明。

            posted on 2008-10-20 15:02 apacs 閱讀(1827) 評(píng)論(0)  編輯 收藏 引用 所屬分類: c++

            My Links

            Blog Stats

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            日韩人妻无码精品久久久不卡 | 久久精品一区二区国产| 亚洲精品无码久久毛片| 国产精品成人99久久久久91gav| 国产精品一区二区久久国产| 久久亚洲欧美国产精品| 久久亚洲春色中文字幕久久久| 久久人妻无码中文字幕| 久久婷婷色综合一区二区| 久久妇女高潮几次MBA| 99久久无色码中文字幕人妻| 午夜不卡久久精品无码免费| 久久精品人人做人人爽97| 久久精品国产亚洲沈樵| 久久精品国产亚洲综合色| 日韩亚洲欧美久久久www综合网| 色综合久久中文色婷婷| 久久精品无码一区二区日韩AV| 久久这里只有精品视频99| 久久久久久国产精品无码下载| 久久精品国产2020| 2022年国产精品久久久久| 91精品国产91久久| 欧美日韩久久中文字幕| 久久国产精品一国产精品金尊| 久久久久国产一级毛片高清版| 久久久久黑人强伦姧人妻| 久久久久久精品成人免费图片| 四虎国产永久免费久久| 中文字幕久久精品| 久久精品免费观看| 香港aa三级久久三级老师2021国产三级精品三级在 | av无码久久久久久不卡网站| 久久发布国产伦子伦精品| 伊人久久大香线蕉影院95| 97精品伊人久久大香线蕉| 久久天堂电影网| 无码人妻久久一区二区三区| 久久九色综合九色99伊人| 久久人妻少妇嫩草AV无码专区| 婷婷综合久久狠狠色99h|