我被问到下面的问题,我被困住了。我理解价值与价值之间的区别引用,但不知道何时我会在方法中使用每个。
如果您正在编写方法,您会选择哪种参数传递方法?为什么呢?
我在下面找到了这个,以帮助我掌握差异。
“如果我告诉你URL,我就是通过引用传递。你可以使用该URL查看我能看到的同一个网页。如果该页面被更改,我们都会看到更改。如果删除了URL ,你所做的只是破坏你对该页面的引用 - 你不是要删除实际页面本身。
如果我打印出页面并给你打印输出,我就会超值。您的页面是原始的断开连接的副本。您不会看到任何后续更改,并且您所做的任何更改(例如,在您的打印输出上涂鸦)都不会显示在原始页面上。如果你破坏了打印输出,你实际上已经销毁了你的对象副本 - 但原始网页仍然完好无损。“
答案 0 :(得分:0)
请记住,传递值会产生副本。可能有两个原因不这样做。首先,如果您传递的值是某些大型数据结构(或其他任何使用大量内存的结构),那么复制整个内容可能效率低下且不必要。其次,如果要在调用函数中镜像参数的任何更改,则必须通过引用传递。这样,原始值就会被修改,而不是副本。
当这两种情况都不适用时,通过值传递通常更简单,也是更好的选择。
还有另外一件事要考虑。通过值传递,因为它创建了一个副本,保护原始函数中的值不被意外修改。但是,您可能希望通过引用传递性能优势。在这种情况下,最好通过引用传递,但将参数标记为const
(或适合您的语言)。