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

            CG@CPPBLOG

            /*=========================================*/
            隨筆 - 76, 文章 - 39, 評論 - 137, 引用 - 0
            數據加載中……

            《C++設計新思維》讀書筆記(五)


             
            1.9 結合Policy Classes

            當你將policies組合起來時,便是它們最有用的時候。舉例,若我們整打算設計一個泛型的smart pointer。我們分析有兩個policies:threading model(多線程模型)和check before dereference (提領前先檢驗),于是可以這樣定義SmartPtr模板類。
            1 
            2 template < Class T,
            3            template <class> class CheckingPolicy,
            4            template <class> class ThreadingModel
            5 >
            6 class SmartPtr;


            我們可以這樣使用:
            1 
            2 typedef SmartPtr<Widget, EnforceNoNull, Singlethreaded> SafeWigetPtr;


            或者,

            1 typedef SmartPtr<Widget, NoChecking, SingleThread> WidgetPTr;


            一旦你設法把一個class分解成正交的policies,便可利用少量的代碼涵蓋大多數行為。

            1.10 以Policy Classes 定制接口

            templates的限制之一,你無法定制class的結構,只能定義其行為。而policy-based design支持結構方面的定制。

            通過一個結構指針或者引用的聚合,或者依靠于繼承。都可以。

            1.11 Policies的兼容性

            假設有兩個SmartPtr:FastWidgetPtr是一個不需要檢驗的指針,SafeWidgetPtr則必須在提領(dereference)前檢驗。你能將一個FastWidgetPtr對象指派(賦值)給一個SafeWidgetPtr對象嗎?

            Policies之間的彼此轉換,最好的方法是以Policy來控制SmartPtr對象之間的拷貝和初始化。如:

            1 template<Class T, template<class> class CheckingPolicy>
            2 class SmartPtr : public CheckingPolicy<T>
            3 {
            4      //
            5      template<class T1, template<class> class CP1>
            6      SmartPtr(const SmartPtr<T1, CP1>& other>
            7           : pointee_(other.pointee_), CheckingPolicy<T>(other)
            8      {//}
            9 };


            本節后續內容從略

            1.12 將一個Class分解為一堆Policies
            1.13 摘要
             
             

            posted on 2007-12-17 22:09 cuigang 閱讀(334) 評論(0)  編輯 收藏 引用 所屬分類: 《C++設計新思維》讀書筆記

            久久综合亚洲鲁鲁五月天| 欧洲人妻丰满av无码久久不卡| 伊人久久大香线蕉av不变影院| 亚洲人成精品久久久久| 成人资源影音先锋久久资源网| www亚洲欲色成人久久精品| 欧美久久久久久| 香港aa三级久久三级| 一本色道久久HEZYO无码| 无码人妻久久久一区二区三区| 国产精品久久久久无码av| 精品久久久久久无码中文野结衣| 无码伊人66久久大杳蕉网站谷歌| 久久久婷婷五月亚洲97号色| 一级做a爰片久久毛片毛片| 久久久久国产一级毛片高清版| 久久妇女高潮几次MBA| 四虎久久影院| 精品综合久久久久久88小说| 99久久国产亚洲综合精品| 91精品国产91久久| 久久综合中文字幕| 亚洲精品白浆高清久久久久久| 久久91这里精品国产2020| 精品久久8x国产免费观看| 精品熟女少妇a∨免费久久| 久久人人超碰精品CAOPOREN| 久久无码一区二区三区少妇| 69久久精品无码一区二区| 天堂久久天堂AV色综合| 天堂无码久久综合东京热| 国产精品成人久久久久三级午夜电影| 热re99久久6国产精品免费| 久久久久青草线蕉综合超碰| 要久久爱在线免费观看| 免费一级欧美大片久久网 | 久久久久久精品成人免费图片| 久久青青草原综合伊人| 久久九九亚洲精品| 国产AⅤ精品一区二区三区久久| 久久综合国产乱子伦精品免费|