• <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{};
            }
            ;
            假設上面的頭文件為file.h,當file1.h或者file2.h發生變化,或者file中的class_name的實現發生變化時,所有包含file.h的文件都得重新編譯,當file.h被很多文件包含時,即使只是對class_name做了小小的改動,也要花費大量的編譯時間。

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

            class class_name
            {
              class_impl
            * implement; //一般會用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的實現

            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是抽象類,一般里面的接口都是純虛函數,就像Java的Interface
            然后提高一個static的create函數(就是工廠方法),這個函數返回改抽象類的某個具體子類的對象,函數聲明中的返回值仍然是該抽象類的指針或引用。

            具體子類在另外一個文件中聲明。

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

            My Links

            Blog Stats

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            伊人久久精品无码二区麻豆| 久久精品国产日本波多野结衣| 久久精品aⅴ无码中文字字幕不卡| 日韩精品久久久久久免费| 精品综合久久久久久97超人| 国产精品久久久久乳精品爆| 久久婷婷是五月综合色狠狠| 国产精品久久久久蜜芽| 久久人人爽人人爽人人AV| 久久精品国产91久久综合麻豆自制| 久久精品无码一区二区三区日韩| 精品综合久久久久久98| 激情久久久久久久久久| 亚洲国产精品无码久久一线| 国产精品成人久久久久久久| 亚洲乱码中文字幕久久孕妇黑人| 亚洲国产精品久久久久网站| 亚洲AV无码久久精品成人 | 国产精品久久久久久影院 | 亚洲欧美伊人久久综合一区二区| 亚洲女久久久噜噜噜熟女| 久久综合九色欧美综合狠狠 | 久久亚洲国产精品一区二区| 无码任你躁久久久久久久| 色悠久久久久久久综合网| 77777亚洲午夜久久多喷| 一本大道久久东京热无码AV| 久久国产香蕉视频| 亚洲精品高清久久| 精品九九久久国内精品| 色欲久久久天天天综合网精品| 无码人妻久久一区二区三区蜜桃| 亚洲国产精品婷婷久久| AAA级久久久精品无码片| 少妇久久久久久久久久| 亚洲国产精品无码久久久不卡| 欧美一区二区久久精品| 久久精品国产亚洲AV蜜臀色欲| 久久人做人爽一区二区三区| 国产精品99久久久精品无码| 少妇高潮惨叫久久久久久|