c++中,模板的特化可以實現對不同的資料型別進行不同的處理:
比如我們要對int型別的資料用快速排序法進行排序
對float型別的資料用插入排序法進行排序
templatevoid sort(t arg, int size)
template<> //特化
void sort(int arg, int size)
template<>
void sort(char arg, int size)
int main() ;
int size = 5;
float array_float[5] = ;
char array_char[5] = ;
sort(array_int, size);
sort(array_float, size);
sort(array_char, size);
system("pause");
return 0;
}
輸出結果如下:
int specliazed template
temp speclized use
char speclized template
特化的基本格式如下:
// 乙個通用的排序程式
template void sort(t arr, int size)
// 模板特化:指定char資料型別的函式
template <>
void sort(char arr, int size)
};template<>
class specialuse
};
使用如下:
specialusecharuse;
specialuseintuse;
輸出結果如下:
general template use
int template use
模板特化的原理:
當編寫了乙個模板類或模板函式時,如果編譯器碰到了乙個新的資料型別或資料型別集合,則編譯器會建立乙個模板類或模板函式的拷貝
模板函式的特化會使編譯器優先檢驗這個型別的模板函式或模板類
C 模板 模板特化 模板偏特化
模板是c 的乙個重要特性 使用模板 可以極大的減少類似功能 的編寫 這可以看做是c 相較於c的進步 因為這一特性在c中是不容易達到的 語言層面不支援 模板的關鍵字是 template 簡單的模板應用 template class test int main 使用模板的類在例項化時需要指明模板引數型別...
c 模板特化
c 模板特化 一 模板特化,specialization of template 模板特化 specialization of template 並不是說例項化乙個模板,如template class stack 宣告stack,這是例項化乙個模板類。類模板特化的意思是,對於某個特定的型別,需要對模...
C 模板特化
對模板特化的理解 特化整體上分為全特化和偏特化,這一點大家都沒有什麼置疑,但是細分它們各包括哪幾種狀態就很難界定了,而且很多權威的書上都不一致,管它呢,反正我們能會用各種特化就可以了。下面就談談我個人對特化的劃分和定義 所謂特化,就是將泛型的東東搞得具體化一些,從字面上來解釋,就是為已有的模板引數進...