最近练习写函数模板,自定义了一个swap函数模板来交换变量值,代码如下:
#include <iostream>
using namespace std;
template<typename T>
void swap(T& a, T& b)
{
T t = a;
a = b;
b = t;
}
int main()
{
int a = 2;
int b = 3;
swap(a,b);
cout << "a=" <<a<<" "<<"b="<<b<< endl;
return 0;
}
但编译时出现如下错误
意思是“重载函数swap的调用是不明确的”,仔细查看了才发现swap函数是C++std库里的标准函数,因此自定义函数名改成Swap 就没问题了
int main()
{
int a = 2;
int b = 3;
Swap(a,b);
cout << "a=" <<a<<" "<<"b="<<b<< endl;
std::swap(a,b);
cout << "a=" <<a<<" "<<"b="<<b<< endl;
return 0;
}
运行结果