最近在学习c++,今天在看书时,敲了几行代码:
void swap(const int &a, int &b);
int main()
{
using namespace std;
int x = 1, y =2;
swap(x, y);
cout << "x = " << x << endl;
cout << "y = " << y << endl;
return 0;
}
void swap(const int &a, int &b)
{
int temp;
temp = a;
//a = b;
b = temp;
//return 0;
}
运行结果是:x = 2
y = 1
很纳闷,为什么会这样,明明已经对x用const进行了限定,怎么还是变化了,看了半天也没发现什么,吃过晚饭,和女朋友一起讨论这件事,在她电脑上把这个程序敲了上去,两个人一起看了会,还是没有什么发现,我突然灵机一动,把swap全部改成大写的Swap,运行后,x = 1 y = 1。原来这个swap是库函数,但是怎么样用自己的swap了,把using namespace std去掉,直接用std::cout, std::endl就行了。
本文详细介绍了在C++编程过程中遇到的一个问题,即使用const限定符的情况下变量仍发生变化的现象。通过将自定义swap函数更改为大写,发现其被系统库函数覆盖。最后通过修改命名空间引用方式解决了问题,并分享了解决过程及学习心得。
1万+

被折叠的 条评论
为什么被折叠?



