实现一个模板函数myswap用于交换两个同类型变量的值,并为string类实现一个专门化的模板
时间: 2024-09-19 18:09:53 浏览: 46
函数模板与类模板.docx
模板函数`myswap`是一个通用的设计,它接受任意类型的参数并交换它们的值,通常通过使用指针间接操作数据来实现。下面是一个简单的模板函数示例:
```cpp
template <typename T>
void myswap(T& a, T& b) {
T temp = a;
a = b;
b = temp;
}
// 使用示例:
int x = 5, y = 10;
myswap(x, y); // 现在x = 10, y = 5
```
对于`string`类的特殊化,由于`string`类型不是基本类型,而是类类型,我们可以直接在类上重载`myswap`方法,如下所示:
```cpp
template <>
void myswap(string& a, string& b) {
a.swap(b);
}
// 使用示例:
string s1 = "Hello", s2 = "World";
myswap(s1, s2); // s1现在等于"World", s2等于"Hello"
```
这里我们利用了C++的模板特化技术,当处理`string`时,使用`s1.swap(b)`而不是创建临时`string`。
阅读全文