该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
另外还有一个模板的全特化与偏特化,一般来说模板函数就是就是用来处理类型不同但代码大致相同的函数的,但如果某一个特殊的类型与其他不一样的话就有问题了,所以我们可以单独指明这个函数的代码,比如对于char类型的max函数可以写成
template<>
char max(char a, char b){
if(a > b) return a;
else {
printf("b >= a");
return b;
}
}
这样就叫做模板的特化,也就是根据模板生成具体函数的时候会采用特化的版本而不是通用版本。一个模板可以有多个typename,如果全部确定就叫做算特化,部分确定就叫做偏特化,函数由于可以重载所以用的不多,对于类和结构就比较常见
#include
using namespace std;
// 一般化设计
template
class TestClass
{
public:
TestClass()
{
cout<
}
};
// 针对普通指针的偏特化设计
template
class TestClass
{
public:
TestClass()
{
cout<
}
};
// 针对const指针的偏特化设计
template
class TestClass
{
public:
TestClass()
{
cout<
}
};
int main()
{
TestClass obj;
TestClass obj1;
TestClass obj2;
return 0;
}
本文介绍了C++中模板特化的概念及应用,包括全特化与偏特化,并通过实例展示了如何为特定类型定制模板实现。
3922

被折叠的 条评论
为什么被折叠?



