看到有新手提问说swap里面的打印执行不了,然后我一看那名字也是醉了居然取了个标准函数里有的名字一样的名,肯定不会执行模板函数啦。另外模板函数写的也有问题,参数应该是指针或者引用的形式,要不交换不了两值。
#include<iostream>
using namespace std;
template<typename TA,typename TB>
void swap(TA a, TB b)
{
TA temp = a;
a = b;
b = temp;
cout << "a="<<a<<",b="<<b << endl;
}
int main(int argc, char * argv[])
{
int x = 1, y = 2;
swap(x, y);
cout << "x="<<x<<",y="<<y << endl;
getchar();
return 0;
}
另外模板函数写的也有问题,参数应该是指针或者引用的形式,要不交换不了两值。正确写法:先取一个跟标准不一样的名字,再用引用或指针形式的参数
#include<iostream>
using namespace std;
template<typename T>
void swapex(T& a, T& b)
{
T temp = a;
a = b;
b = temp;
cout << "a="<<a<<",b="<<b << endl;
}
int main(int argc, char * argv[])
{
int x = 1, y = 2;
swapex(x, y);
cout << "x="<<x<<",y="<<y << endl;
getchar();
return 0;
}