按值传递结果

Posted

技术标签:

【中文标题】按值传递结果【英文标题】:Pass by value result 【发布时间】:2014-04-14 11:42:48 【问题描述】:

我正在自学一些参数传递实现模型,在我的编程语言书中,它要求我编写一个程序来产生不同的行为,具体取决于在其参数传递中使用的是引用传递还是值传递结果。有哪些重要问题可以帮助我理解并得到这个答案?

我知道按引用传递变量的位置并由函数直接修改,而复制值然后将其复制回。我只是想不出结果会不同的情况(也许我误解了按值传递的结果?)。

【问题讨论】:

是的,您误解了按值传递。按值传递传递参数的副本。在被调用函数中对其所做的更改不会复制回调用者。 (嗯,至少在我所知道的每一种语言中。你没有指定语言。) 是传值结果不是传值。 提示:如果被传递的对象在构造/销毁时有副作用怎么办? 抱歉,我没有正确阅读您的问题,但看起来可能是重复的。见***.com/questions/5768721/pass-by-value-result 感谢您的帮助,该链接确实帮助了我。我想我没有找到任何结果,因为我正在搜索按值传递而不是:| 【参考方案1】:
// Correct implementation of a function addToMyself() as the name suggests
void addToMyself(int &a, int b) 
    a += b;


// Incorrect implementation
void addToMyself(int a, int b) 
    a += b;


// Tweaked implentation with pass by value
int addTwo(int a, int b) 
    return a+b;

// and use 
a = addTwo(a, b)

【讨论】:

以上是关于按值传递结果的主要内容,如果未能解决你的问题,请参考以下文章

自动将按值传递更改为按引用传递

如何按值传递sql函数参数

为啥向量被视为按值传递,即使它是通过 const 引用传递的?

通过引用而不是按值传递 OpenCV C++

C++/ASM:按值传递使用 xmm0,但通过引用使用 rdi

C ++:将对象按值传递给同一类的成员函数