C++中定义特例化版本
时间: 2023-09-23 08:13:08 浏览: 55
在 C++ 中,我们可以使用模板特例化来定义特定类型的特殊实现。特例化版本是指针对某些特定类型的模板实现,与一般情况下的实现不同。
下面是一个示例,定义了一个模板类,包含一个通用版本和一个针对字符串类型的特例化版本:
```cpp
template<typename T>
class MyClass {
public:
void print() {
std::cout << "Generic implementation" << std::endl;
}
};
template<>
class MyClass<std::string> {
public:
void print() {
std::cout << "Specialized implementation for string" << std::endl;
}
};
```
在这个示例中,我们定义了一个通用的 `MyClass` 模板类,包含一个 `print` 方法,输出一条通用实现的消息。然后,我们使用特例化来定义了一个针对 `std::string` 类型的特殊实现,该实现输出一条特殊实现的消息。
这样,当我们使用 `MyClass` 类时,如果传递的类型是 `std::string`,则会调用特殊实现,否则调用通用实现。例如:
```cpp
MyClass<int> myInt;
myInt.print(); // 输出 "Generic implementation"
MyClass<std::string> myString;
myString.print(); // 输出 "Specialized implementation for string"
```