c++中函数模板的显示具体化
生活随笔
收集整理的這篇文章主要介紹了
c++中函数模板的显示具体化
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
函數模板的顯示具體化。
函數模板存在局限性,當定義函數模板時,我們始終假定函數體中的語句是合法的。例如定義如下函數模板:
template <typename T> T add(T x, T y) {return x + y; }如果T是內置數據類型,則x+y是合法的。例如,Ad(1,2)是合法的。但是,如果T用int*替換則是錯誤的,因為兩個指針相加沒有任何意義。例如,Add(a,b)是非法的,其中a,b聲明如下:
int a[5] = { 1,2,3,4,5 }; int b[5] = { 1,2,3,4,5 };即函數模板可能無法處理某些特定的數據類型。此時,可以使用模板的顯式具體化解決函數模板處理特定數據類型的問題顯式具體化的聲明格式如下:
**template<>
類型說明符 函數名 <類型說明符>(參數列表);
**
注意:
與函數模板的顯式實例化相比,兩者有相似之處,也有區別,區別如下。
(1)顯式實例化只需顯式聲明模板參數的類型,不需要重新定義函數的實現;而顯式具體化必須重新定義函數模板,改寫函數模板的功能以處理特定的數據類型,達到自己想要的特定結果。
(2)顯式實例化中 template后面沒有“<>”,而顯式具體化中 template后面緊跟“<>”即,使用符號“<>”區別顯式實例化(不使用符號“<>”)和顯式具體化(使用符號“<>”)。
例子:
總結
以上是生活随笔為你收集整理的c++中函数模板的显示具体化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++模板之函数模板
- 下一篇: vector模板,初学者必读