以下是一个使用模板化类型(嵌套模板类)的代码示例,用于部分模板特化:
#include
// 声明一个模板类
template
class MyClass {
public:
MyClass(T value) : m_value(value) {}
void print() {
std::cout << "General template: " << m_value << std::endl;
}
private:
T m_value;
};
// 部分模板特化
template <>
class MyClass {
public:
MyClass(int value) : m_value(value) {}
void print() {
std::cout << "Specialized template for int: " << m_value << std::endl;
}
private:
int m_value;
};
int main() {
MyClass obj1('A');
obj1.print(); // 使用普通模板类
MyClass obj2(42);
obj2.print(); // 使用特化的模板类
return 0;
}
在上面的示例中,我们定义了一个模板类MyClass
,它接受一个类型参数T
。我们使用普通的模板类来创建一个MyClass
对象,并调用print()
函数来打印结果。
然后,我们使用部分模板特化来定义一个特化版本的MyClass
,当T
为int
类型时,我们使用特化版本。我们创建一个MyClass
对象,并再次调用print()
函数来打印结果。
运行上述代码,将会输出以下结果:
General template: A
Specialized template for int: 42
可以看到,通过使用部分模板特化,我们能够根据特定的类型对模板进行特化定制。