c++语言编写一个完整程序,设计一个函数模板,实现两数的交换,并用int、float、char等类型的数据进行测试避免[错误] call of overloaded 'swap(int&, int&)' is ambiguous
时间: 2024-01-24 07:17:30 浏览: 74
以下是一个实现两数交换的函数模板,可以避免类型错误和函数重载问题:
```cpp
#include<iostream>
using namespace std;
template<typename T>
void myswap(T& a, T& b)
{
T temp = a;
a = b;
b = temp;
}
int main()
{
int a = 1, b = 2;
float c = 1.5, d = 2.5;
char e = 'a', f = 'b';
myswap(a, b);
myswap(c, d);
myswap(e, f);
cout << "a=" << a << ", " << "b=" << b << endl;
cout << "c=" << c << ", " << "d=" << d << endl;
cout << "e=" << e << ", " << "f=" << f << endl;
return 0;
}
```
输出结果:
```
a=2, b=1
c=2.5, d=1.5
e=b, f=a
```
在这个程序中,我们定义了一个函数模板myswap,它可以接受任何类型的参数,并且可以正确地交换它们的值,避免了类型错误和函数重载问题。在main函数中,我们使用myswap来交换不同类型的变量,并且输出了交换后的结果。
阅读全文