gpt4 book ai didi

c++ - 寻找有关此 C++ 代码为何在没有引用的情况下无法工作的解释

转载 作者:行者123 更新时间:2023-11-30 00:44:57 24 4
gpt4 key购买 nike

我是一名学习 C++ 的初学者,学习了有关通过引用传递参数的章节。有一个这样定义的交换函数:

    void swap(double& d1, double& d2)
{
double temp = d1;
d1 = d2;
d2 = temp;
}

测试是这样的,它成功了,交换了值:

    int main()
{
double x = 1;
double y = 2;

cout << "X==" << x << "y==" << y << '\n';

swap(x,y);

cout << "x==" << x << "y==" << y << '\n';
}

但是我一辈子都弄不明白为什么删除引用会使这段代码什么都不做:

 void swap(double d1, double d2)
{
double temp = d1;
d1 = d2;
d2 = temp;
}

我这样做是因为我想更好地理解引用文献,因为我无法正确理解它们。我将不胜感激答案或指向正确方向的指示。

最佳答案

“按值传递”和“按引用传递”在 C++ 等过程式编程语言中有常见的概念。

当变量按值传递到过程(或函数)时,会生成一个变量拷贝,并且在过程(或函数)中所做的任何修改都不会反射(reflect)在变量中按值传递 .

相反,当变量通过引用传递时,修改会反射(reflect)在通过引用传递的变量中。

C++ 中的术语引用 指的是该想法,因此在引用案例中,swap() 的操作交换作为参数传递的原始变量,在第二种情况下它们不交换。

如果你看到一个函数void foo(int x)称为 foo(b);您应该将其理解为“复制b 并在该拷贝上执行foo”。如果是 void foo(int &x)它将是“直接在 foo 上执行 b

关于c++ - 寻找有关此 C++ 代码为何在没有引用的情况下无法工作的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45608386/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com