按值传递结果
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)
【讨论】:
以上是关于按值传递结果的主要内容,如果未能解决你的问题,请参考以下文章
为啥向量被视为按值传递,即使它是通过 const 引用传递的?