发布于 2013-03-22 23:53:57
我们正在传递一个引用,这样就不会创建stack对象的副本。如果创建了副本,则对其进行的修改不会影响传递给函数的原始stack对象。它只会影响函数的本地副本。
引用类似于对象的别名;当声明为
stack<int>& sourcesource现在引用该对象。
发布于 2013-03-22 23:55:08
上述问题中使用的函数具有以下原型:
void Hanoi(int nDisks, stack<int> source, stack<int> intermed, stack<int> dest)也就是说,它通过值获取所有传递的stack<int>对象。将创建传递的stack的副本,并且在此函数体内对此对象所做的任何更改都会更改副本,而不是已传递给它的原始对象。
这就是为什么解决方案是通过引用传递这些stack对象,而不是通过值传递。基本上,引用(如stack<int>& dest)允许您在Hanoi函数中处理dest,就像它的类型是stack<int>一样,只是没有复制,并且调用者可以看到更改:)
https://stackoverflow.com/questions/15574551
复制相似问题