c++ - 为什么在声明 using namespace std 时将 int 作为指针参数传递给函数?

标签 c++ pointers std swap

<分区>

我正在处理一个使用指针交换两个变量值的函数,我发现通过声明 using namespace std,我不需要将变量的地址作为参数传递让它工作。传递 int 本身将使代码工作。

我怀疑这与 std 处理参数的方式有关,但我找不到答案。如果有人能指出正确的方向,我将不胜感激。

1) 不使用 using namespace std

#include<iostream>
void swap(int* X, int* Y);
int main() {
    int a, b;
    std::cin >> a;
    std::cin >> b;
    std::cout << a << "," << b << std::endl;
    swap(&a, &b);
    std::cout << a << "," << b << std::endl;
}
void swap(int* X, int* Y) {
    int temp = *X;
    *X = *Y;
    *Y = temp;
}

2) using namespace std

#include<iostream>
**using namespace std;**
void swap(int* X, int* Y);
int main() {
    int a, b;
    std::cin >> a;
    std::cin >> b;
    std::cout << a << "," << b << std::endl;
    swap(a, b);
    std::cout << a << "," << b << std::endl;
}
void swap(int* X, int* Y) {
    int temp = *X;
    *X = *Y;
    *Y = temp;
}

最佳答案

事实并非如此。使用 using namespace std; 你最终会调用 std::swap它通过引用获取其参数。这是 using namespace std 是非常糟糕的做法的众多原因之一。

关于c++ - 为什么在声明 using namespace std 时将 int 作为指针参数传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56249404/

相关文章:

c++ - 如何遍历 QMultiHash 中的所有 values()

c++ - 如何从C++动态调用汇编函数?

c++ - 如何实现在构造函数中使用自身的对象的析构函数

c++ - 如何避免在 64 位指针上浪费内存

c++ - 指针有拷贝构造函数吗?

c++ - 为什么我需要显式分离短期变量?

c++ - 将 std::bitset 分成两半?

c++ - 在运行时创建测试(谷歌测试)

c++ - : vector. clear() 或 if(vector.empty()) clear(); 哪个更有效?

c++ - 模板类型的引用是什么意思?