要实现不同的模板类,但具有相同的成员函数,可以使用模板特化的方法。模板特化是指为特定类型提供单独的实现,而不是使用通用的模板实现。
下面是一个示例代码,展示了如何使用模板特化来实现不同的模板类,但具有相同的成员函数:
#include
// 声明模板类
template
class MyClass;
// 模板特化为 int 类型
template <>
class MyClass {
public:
void foo() {
std::cout << "This is MyClass::foo()" << std::endl;
}
};
// 模板特化为 float 类型
template <>
class MyClass {
public:
void foo() {
std::cout << "This is MyClass::foo()" << std::endl;
}
};
int main() {
MyClass myInt;
myInt.foo(); // 输出:This is MyClass::foo()
MyClass myFloat;
myFloat.foo(); // 输出:This is MyClass::foo()
return 0;
}
在这个示例中,我们首先声明了一个模板类 MyClass
。然后,我们使用 template <>
来定义特定类型的模板特化。对于特化的模板类,我们可以为其提供不同的成员函数实现。
在 main
函数中,我们分别创建了 MyClass
和 MyClass
的实例,并调用了它们的 foo
成员函数,分别输出不同的结果。
通过使用模板特化,我们可以实现不同的模板类,但具有相同的成员函数。