我有一堆这样的代码:
#include <iostream>
using namespace std;
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int a = 7;
int b = 5;
swap(a, b);
cout << a << b; // prints 57 as expected
}
但是,如果我删除
using namespace std
,编译器会引发有关 int
到 int*
转换的错误。为什么代码可以与 using namespace std
一起使用,即使我没有使用带有 &
运算符的方法?
在第一个示例中,由于您的
std::swap
,因此调用 using namespace std
。
第二个示例与第一个示例完全相同,因此您可能无法使用。
无论如何,如果您将函数重命名为
my_swap
或类似的名称(并更改每次出现的情况),那么第一个代码不应该按预期工作。或者,删除 using namespace std
并显式调用 std::cin
和 std::cout
。我会推荐第二种选择。