类模板 全特化的实例
时间: 2023-08-21 13:07:34 浏览: 175
类模板的全特化是指对模板参数进行具体化,使其成为一个具体的类型,以便编译器能够生成对应的代码。下面是一个类模板全特化的实例:
```cpp
#include <iostream>
template <typename T>
class MyClass {
public:
void print() {
std::cout << "MyClass<T>" << std::endl;
}
};
template <>
class MyClass<int> {
public:
void print() {
std::cout << "MyClass<int>" << std::endl;
}
};
int main() {
MyClass<float> obj1;
obj1.print(); // 输出: MyClass<T>
MyClass<int> obj2;
obj2.print(); // 输出: MyClass<int>
return 0;
}
```
在上面的代码中,`MyClass` 是一个类模板,它有一个模板参数 `T`。然后,我们对 `MyClass` 进行了全特化,将 `T` 具体化为 `int`,这样就生成了一个新的类 `MyClass<int>`,它有自己的实现。在 `main` 函数中,我们创建了两个对象 `obj1` 和 `obj2`,分别属于 `MyClass<float>` 和 `MyClass<int>`,并调用了它们的 `print` 方法,输出了不同的结果。
需要注意的是,类模板的全特化必须在模板参数完全确定的情况下进行,否则编译器无法生成正确的代码。同时,全特化也会覆盖掉原有的类模板定义,因此需要谨慎使用。
阅读全文