答案 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>
一样,只是没有复制,并且调用者可以看到更改:)