Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 参考传递_C++ - Fatal编程技术网

C++ 参考传递

C++ 参考传递,c++,C++,我正在读下面的问题。第一个答案是使用 stack<int>& 堆栈& 我的问题是为什么会这样?。内存中发生了什么?我们正在传递一个引用,以便不会生成堆栈对象的副本。如果制作了副本,对其进行修改不会影响传递给函数的原始堆栈对象。它只会影响函数的本地副本 引用就像对象的别名;当宣布为 stack<int>& source 堆栈和源 source现在指的是该对象。上述问题中使用的函数具有以下原型: void Hanoi(int nDisks, stack

我正在读下面的问题。第一个答案是使用

stack<int>&
堆栈&

我的问题是为什么会这样?。内存中发生了什么?

我们正在传递一个引用,以便不会生成
堆栈
对象的副本。如果制作了副本,对其进行修改不会影响传递给函数的原始
堆栈
对象。它只会影响函数的本地副本

引用就像对象的别名;当宣布为

stack<int>& source
堆栈和源

source
现在指的是该对象。

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

void Hanoi(int nDisks, stack<int> source, stack<int> intermed, stack<int> dest)
void Hanoi(内部NDisk、堆栈源、堆栈中间、堆栈目标)
i、 e.它按值获取所有传递的
堆栈
对象。将创建传递的
堆栈的副本
,并且在此函数体中对此对象所做的任何更改都将更改副本,而不是传递给它的原始对象


这就是为什么解决方案是通过引用而不是通过值传递这些
stack
对象。基本上,引用(如
stack&dest
)允许您在
Hanoi
函数中处理
dest
,就像它的类型是
stack
,没有复制,调用方可以看到更改:)

您在问什么是引用吗?这是你的C++书所解释的。如果你不通过引用,那么它将复制一个容器,如果你想修改实际变量,它并不是你想要的。引用仅仅是一个指针。读出RAII和指针。