类模板 全特化 部分特化的实例
时间: 2023-08-21 17:07:34 浏览: 81
类模板是一种通用的类定义,可以用来创建多个具有相同结构但不同数据类型的类。在使用类模板时,可以进行全特化和部分特化。
全特化是指针对某个具体的数据类型,对类模板中的所有类型参数都进行了具体化,从而得到一个完全具体化的类定义。例如:
```
template <typename T>
class MyTemplateClass {
public:
void print() {
std::cout << "This is a template class." << std::endl;
}
};
template<>
class MyTemplateClass<int> {
public:
void print() {
std::cout << "This is a specialized class for int type." << std::endl;
}
};
```
在上面的例子中,对于类型参数为 int 的情况,我们对 MyTemplateClass 进行了全特化。这样,当我们使用 MyTemplateClass<int> 时,就会调用特化后的 print 函数,输出 "This is a specialized class for int type."。
部分特化则是在类模板定义中仅对某些类型参数进行具体化,而对其他类型参数仍保持通用。例如:
```
template <typename T, typename U>
class MyTemplateClass {
public:
void print() {
std::cout << "This is a template class." << std::endl;
}
};
template<typename T>
class MyTemplateClass<T, int> {
public:
void print() {
std::cout << "This is a partial specialized class for int as the second type argument." << std::endl;
}
};
```
在上面的例子中,对于第二个类型参数为 int 的情况,我们对 MyTemplateClass 进行了部分特化。这样,当我们使用 MyTemplateClass<double, int> 时,就会调用部分特化后的 print 函数,输出 "This is a partial specialized class for int as the second type argument."。而对于其他类型参数的情况,仍然会调用通用的 print 函数。
阅读全文