C 函式模板的顯式具體化

2021-05-26 17:38:20 字數 857 閱讀 1647

/*

功能:c++模板的顯式具體化練習。

常規模板:add加法模板,採用顯式具體化模板方式,具體化乙個複數相加的add函式。

總結:顯式具體化是針對常規模板進行的,因此必須與常規模板的定義格式相符合。如下程式所示,除any型別可以用乙個具體化的c++型別

替換外,其它應該保持與常規模板一致,否則可能不能進行編譯

編譯環境:visual studio 2008

*/

#include

//宣告常規函式模板原型

template

any add(const any &a,const any &b);

//定義表示複數的結構

struct complex

;//宣告顯示具體化函式原型

template <> complex add(const complex &,const complex &);

using namespace std;

int main(void)

;complex sc2 = ;

complex addsc = add(sc1,sc2);

cout << "(sc1 + sc2) .real = " << addsc.real ;

cout << ", (sc1 + sc2) .imaginary = " << addsc.imaginary << endl; ;

return 0;

}template

any add(const any a,const any b)

template <> complex add(const complex &ca,const complex &cb)

C 函式模板的顯式具體化

我們知道可以利用函式模板來處理不同的資料型別,然而函式模板對於某些資料型別並不能處理,具有一定的侷限性。那麼應該如何解決該侷限性呢?例如經典的資料交換函式swap template typename t void swap t a,t b 我們可能希望利用上述的函式模板實現不同型別資料的交換,然而對...

C 函式模板的顯式具體化

在c 中,我們可以使用函式模板來增加 的復用性,但是並不是所有的型別都可以呼叫函式函式模板來處理,如陣列和結構體資料型別。這就是函式模板的侷限性。struct job 交換兩個這種結構的內容,原來的模板使用以下 進行交換 temp a a b b temp 由於c 允許將乙個結構賦給另乙個結構,因此...

C 模板顯式具體化

目錄 出品 coder梁 id coder lt 前文當中說mjwgjecfta了,模板函式雖然非常好用,但是也存在一些問題。比如有的操作並不是對所有型別都適用的,針對這種情況c 提供了乙個解決方案,就是針對特定型別提供具體化的模板定義。這裡的具體可以理解成型別的具體。我們來看乙個c primer當...