C++中的模板特化不同於模板的實例化,模板參數在某種特定類型下的具體實現稱為模板的特化。模板特化有時也稱之為模板的具體化,分別有函式模板特化和類模板特化。
基本介紹
- 中文名:模板特化
- 外文名:Template Specialization
- 領域:計算機編程
- 程式語言:C++
定義
函式模板特化
#include <iostream>using namespace std;template<typename T> T Max(T t1,T t2){ return (t1>t2)?t1:t2;} typedef const char* CCP;template<> CCP Max<CCP>(CCP s1,CCP s2){ return (strcmp(s1,s2)>0)?s1:s2;}int main(){//調用實例:int Max<int>(int,int) int i=Max(10,5); //調用顯示特化:const char* Max<const char*>(const char*,const char*) const char* p=Max<const char*>("very","good"); cout<<"i:"<<i<<endl; cout<<"p:"<<p<<endl;}
typedef const char* CCP;CCP Max(CCP s1,CCP s2){ return (strcmp(s1,s2)>0)?s1:s2;}
類模板特化
#include <iostream>using namespace std; template<typename T>class A{ T num;public: A(){ num=T(6.6); } void print(){ cout<<"A'num:"<<num<<endl; }}; template<>class A<char*>{ char* str;public: A(){ str="A' special definition "; } void print(){ cout<<str<<endl; }}; int main(){ A<int> a1; //顯示模板實參的隱式實例化 a1.print(); A<char*> a2;//使用特化的類模板 A2.print();}