为了账号安全,请及时绑定邮箱和手机立即绑定

c++ swap问题,求解?

c++ swap问题,求解?

蝴蝶不菲 2019-02-05 10:06:31
函数如下:#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++里面还有特殊定义?
查看完整描述

2 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

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

查看完整回答
反对 回复 2019-03-22
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

你的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;
}



查看完整回答
反对 回复 2019-03-22
  • 2 回答
  • 0 关注
  • 795 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信