c++ - 如果不先声明函数,我可以交换变量的值吗?

标签 c++

#include <iostream>

using namespace std;

void swap(int, int);

int main()
{
    int a=10;
    int b=20;

    swap (a, b);

    cout << "a: " << a << endl;
    cout << "b: " << b << endl;

    return 0;
}

void swap(int x, int y)
{
    int t;
    t = x;
    x = y;
    y = t;
}

上面的代码不能交换a和b的值。 但我的问题是,当我忘记输入第三行时“void swap(int, int); ",a 和 b 的值交换了!!为什么?

最佳答案

因为你有

using namespace std;

在源代码的开头。

这是一个 a bad programming practice ,您刚刚亲身经历了其后果。你告诉编译器你想调用 std::swap,但没有任何线索表明你确实这样做了。

这很讽刺,因为你的 swap() 版本不能正常工作,但是 std::swap 可以;因此,您误以为您的代码可以正常工作,而实际上却没有。

永远不要使用“using namespace std;”用你的代码。只需忘记 C++ 语言的这一部分曾经存在过。

关于c++ - 如果不先声明函数,我可以交换变量的值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36684040/

相关文章:

c++ - 花钱买一本关注即将到来的 C++0x 的 C++ 书是否明智?

c++ - 我真的应该将头文件指定为 target_sources() 吗?

c++ - 来自 Protocol Buffer 消息的普通结构

c++ - 从派生类成员初始化基类引用

c++ - 什么等于 Eigen C++ 中 Python 的 np.linalg.solve(A, B)

c++ - 如何处理 R 中的列表到 Rcpp

php - 初始化然后单行输出

c++ - 如果我按值(value)捕获但不使用它,我还能得到一份拷贝吗?

android - 使用 NDK 在 Android 上进行本地化/本地化

c++ - 按下按钮后如何延迟输出约 15 分钟?