1、模板特化的引入
使用模板时会遇到一些特殊的类型需要特殊处理,不能(或不希望)直接使用当前的模板版本时,所以此时我们就需要对该类型定义一个类或函数的特例化版本。
例:当使用一个判断相等的模板函数时
template<class T>bool Isequal(T& p1, T& p2){return p1 == p2;}
但是该模板函数在对于字符串进行比较时就不能使用了,对于字符串我们不能直接比较,因此直接特化出一个专门供字符串使用的模板参数:
template<> // 此处不添加类型模板,直接使用空即可bool Isequal<char*>(char*& p1, char*& p2){// 在类名后使用尖括号注明特化类型return strcmp(p1, p2) == 0;}
【注意】
(1)模板及其特例化版本应该声明在同一个头文件中。所有同名模板的声明应该放在前面,然后是这些模板的特例化版本。
(2)使用特换模板函数时格式有要求: