修改代码使类的模板为template <typename T> void Swap(T* p1, T* p2){ ... }
时间: 2024-03-18 12:41:41 浏览: 160
cpp代码-模板 泛型 template<typename> template<class>
好的,这是修改后的代码,使用指针作为函数模板的参数:
```c++
#include <cstring>
template<typename T>
void Swap(T* p1, T* p2) {
T temp = *p1;
*p1 = *p2;
*p2 = temp;
}
template<>
void Swap(char** p1, char** p2) {
char* temp = new char[strlen(*p1) + 1];
strcpy(temp, *p1);
strcpy(*p1, *p2);
strcpy(*p2, temp);
delete[] temp;
}
```
对于大部分类型,我们可以直接使用指针进行交换,但对于C风格字符串(char*)类型的变量,我们需要手动进行内存分配和字符串拷贝,避免指针被重复释放或者内存泄漏等问题。
阅读全文