template < > int compare<const char*>(const char* left, const char* right) { std::cout <<"in special template< >..." <<std::endl; return strcmp(left, right); }语法
时间: 2024-03-01 14:50:09 浏览: 116
用一个函数实现两个字符串的比较,即自己写一个 strcmp 函数
这是一个函数模板的特化,特化的类型是`const char*`。这个函数模板的通用版本可能是这样的:
```c++
template<typename T>
int compare(const T& left, const T& right) {
std::cout << "in generic template..." << std::endl;
if (left < right) return -1;
if (right < left) return 1;
return 0;
}
```
而特化版本则是只有在传入参数类型为`const char*`时才会被调用,其实现是调用了标准库中的`strcmp`函数比较两个字符串的大小,并返回比较结果。特化版本中的函数体和通用版本是不同的,这就是模板特化的作用:为某个具体类型提供特定的实现。
阅读全文