c++ swap问题,求解?

函数如下:
#include<iostream>
using namespace std;
int main()
{
void swap(int &x,int &y);
int a,b;
cin>>a>>b;
swap(a,b);
cout<<a<<">"<<b<<endl;
return 0;
}
void swap(int &x,int &y)
{
int temp;
cout<<x<<y<<endl;
if(x<y)
{temp=x;x=y;y=temp;}
cout<<x<<y<<endl;
}

我发现这串代码根本不能实现我预计的功能,也就是说自定义的swap函数不能被调用。我试着把swap函数放在main函数前,结果成功了。然后把上述代码中出现三次的swap都去掉一个p,也就是改成其他名字,运行也成功了。这是怎么回事?难道swap在c++里面还有特殊定义?

蝴蝶不菲
浏览 807回答 2
2回答

繁星coding

c++ 的<algorithm>已经实现了swaptemplate <class T> void swap ( T& a, T& b ){T c(a); a=b; b=c;}

慕桂英546537

你的swap函数定义在main函数外,而你又在main函数里声明了一个swap函数,它覆盖了你定义在main函数外的swap函数,此时调用了main函数里的swap,而它只有一个分号,也就是什么都没做,看起来就好像没调用一样。把这个声明放到main函数的前面就没问题了。代码如下:#include<iostream>using namespace std;void swap(int &x, int &y);int main(){int a, b;cin>>a>>b;swap(a, b);cout<<a<<" > "<<b<<endl;return 0;}void swap(int &x, int &y){int temp;cout<<x<<y<<endl;if(x<y){temp=x;x=y;y=temp;}cout<<x<<y<<endl;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Maya