【C++模板】特化与偏特化 template [partial] specialization
生活随笔
收集整理的這篇文章主要介紹了
【C++模板】特化与偏特化 template [partial] specialization
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1?template specialization 模板特化
一般情況下類模板定義如下:
template<class Window, class Controller> class Widget {... 泛化實現代碼 ... }; 特化是指把類模板中指定的class T變成具體的類型:class Widget<ModalDialog, MyController> {... 特化實現代碼 ... }; 其中ModalDialog和MyController是你自己另外定義的類.
有了這個Widget的特化定義之后,如果你以后定義了Widget<ModalDialog, MyController>對象時,編譯器就會使用上述的特化定義.
如果定義了其它泛型對象,那么編譯器就是用原本的泛化定義.
這就是模板的特化.
2?template partial specialization 模板偏特化
模板特化是通過"給模板中的所有模板參數一個具體的類"的方式來實現的.而模板偏特化則是通過"給模板中的部分模板參數以具體的類,而留下剩余的模板參數仍然使用原來的泛化定義"的方式來實現的.
template<class Window> //仍然使用原來的泛化定義; class Widget<Window, MyController> //MyController是具體的類,是特化定義; {... 偏特化實現代碼 ... }; 模板的偏特化能力很強大.當你實例化一個模板時,編譯器會把目前存在的偏特化模板和全特化模板做比較,并找出其中最合適、最匹配的實現.這樣,靈活性就很大.
模板的偏特化機制不能用在函數身上,不論成員函數還是非成員函數.
3?注意
Date: 2011-10-21 17:30:04
HTML generated by org-mode 6.33x in emacs 23
總結
以上是生活随笔為你收集整理的【C++模板】特化与偏特化 template [partial] specialization的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# 视频监控系列(11):H264播放
- 下一篇: C++沉思录