c++类模板部分特化怎么用,请举一个具体例子
时间: 2023-08-27 22:35:44 浏览: 136
当我们定义一个类模板时,有时候我们只需要对某些特定类型进行特殊处理,而对其他类型则采用默认实现。这时我们就可以使用类模板的部分特化来实现这个功能。
下面是一个示例:
```cpp
#include <iostream>
using namespace std;
template <typename T1, typename T2>
class MyClass
{
public:
void func()
{
cout << "MyClass<T1,T2>" << endl;
}
};
// 部分特化,当 T2 为 int 类型时,采用特殊实现
template <typename T1>
class MyClass<T1, int>
{
public:
void func()
{
cout << "MyClass<T1,int>" << endl;
}
};
int main()
{
MyClass<float, double> obj1;
obj1.func(); // 输出 MyClass<T1,T2>
MyClass<int, int> obj2;
obj2.func(); // 输出 MyClass<T1,int>
return 0;
}
```
在上面的示例中,我们定义了一个类模板 `MyClass`,它有两个模板参数 `T1` 和 `T2`。在类模板的定义中,我们使用了默认实现。
然后,我们使用部分特化来对 `MyClass` 进行特殊处理。当 `T2` 的类型为 `int` 时,使用特殊实现。在特殊实现中,我们重新定义了 `func` 函数的实现。
最后,我们在 `main` 函数中创建了两个不同类型的 `MyClass` 对象,并调用它们的 `func` 函数。输出结果表明,对于第一个对象,使用了默认实现,而对于第二个对象,使用了特殊实现。
阅读全文