《C++設計新思維》讀書筆記(七)
2.2 模板偏特化
模板偏特化讓你在template的所有可能實體中特化出一組子集。如:
1
2 template < class Window, class Controller>
3 class Widget{};
2 template < class Window, class Controller>
3 class Widget{};
你可以這樣加以特化:
1 template <>
2 class Widget<ModalDialog, MyController>
3 {};
2 class Widget<ModalDialog, MyController>
3 {};
其中,ModalDialog 和 MyController 是另外定義的類。
有時候,你需要針對任意window并搭配一個特定的MyController來特化Widget,這時候就需要模板偏特化。
1 template < class Window >
2 class Widget < Window, MyController>
3 {};
2 class Widget < Window, MyController>
3 {};
還可以拿任意Button來偏特化:
1 template <class ButtonArg>
2 class Widget<Button<ButtonArg>, MyController>
3 {};
2 class Widget<Button<ButtonArg>, MyController>
3 {};
編譯器會嘗試找出最匹配的定義。但這樣的機制不能用在函數身上,無論是成員函數還是非成員函數。
posted on 2007-12-17 22:12 cuigang 閱讀(287) 評論(0) 編輯 收藏 引用 所屬分類: 《C++設計新思維》讀書筆記