参考传递

时间:2013-03-22 15:50:52

标签: c++

我正在阅读以下问题Towers of Hanoi question。第一个答案说使用

stack<int>&

我的问题是为什么这个?记忆中发生了什么?

2 个答案:

答案 0 :(得分:1)

我们正在传递引用,以便不会创建stack对象的副本。如果制作了副本,则对其进行修改不会影响传递给该函数的原始stack对象。它只会影响函数本地的副本

引用就像是对象的别名;当声明为

stack<int>& source

source现在引用该对象。

答案 1 :(得分:1)

上述问题中使用的函数具有以下原型:

void Hanoi(int nDisks, stack<int> source, stack<int> intermed, stack<int> dest)

即。它按值传递所有stack<int>个对象。创建了传递stack的副本,并且在此函数体内对此对象所做的任何更改都会更改副本,而不是传递给它的原始对象。

这就是解决方案是通过引用传递这些stack对象而不是传递值的原因。基本上引用(例如stack<int>& dest)允许您在dest函数中处理Hanoi,就像它的类型是stack<int>一样,只是没有复制,并且调用者可以看到更改:)