//類模板特化
template <class T>
class A{
public:
A(){
std::cout << "T" << std::endl;
}
};
template <>
class A<int>{
public:
A(){
std::cout<<"int"<<std::endl;
}
};
//函數(shù)模板特化
template <class T>
int compare(T t1,T t2){
return t1<t2;
}
template <>
int compare(const char* t1,const char* t2){
//strcmp 按位用ASCII表進(jìn)行比較,大于和小于只規(guī)定返回正數(shù)和負(fù)數(shù)甩卓,并沒有規(guī)定一定返回1和-1
int flag = strcmp(t1,t2);
return flag;
}
//類模板的偏特化
template <class Tb,class local_allocator>
class container{
public:
container(){
std::cout << "general" << std::endl;
}
};
template <class local_allocator>
class container<bool,local_allocator>{
public:
container(){
std::cout << "specialize" << std::endl;
}
};
按我自己的理解(可能不太準(zhǔn)確),偏特化意思就是講原來的某個特化類型替換為具體類型
int main() {
A<int> a;
A<double> b;
container<int ,int> c;
container<bool,int> d;
std::string str1 = "qwer";
std::string str2 = "dfffff";
std::cout << compare(str1.c_str(),str2.c_str())<<std::endl;
std::cout << "Hello, World!" << std::endl;
return 0;
}
輸出結(jié)果為