c++ - C++ 中的引用调用是如何工作的?

标签 c++ pass-by-reference

考虑以下函数原型(prototype):

swap(int &a,int &b);

'x' 和 'y' 是 main 函数局部的两个整数。 假设控件在 main() 函数中。 现在,当编译器遇到这种类型的语句时:swap(x,z); 引擎盖下到底发生了什么(我的意思是,就内存位置而言)? 我的问题是:-

  1. 在 swap() 函数的堆栈中是否为 a,b 分配了任何内存?如果分配了,它将存储什么?
  2. 引用调用是如何工作的?

最佳答案

Is there any memory allocated for a,b in swap() function's stack?If allocated, what would it store?

首先,考虑在调用 swap_ptr(int *a, int *b) 时对同一问题的回答 假设堆栈用于传递参数,一些内存将分配给 ab 在对 swap_ptr(&x, &y) 的调用中。该内存将保存指向 xy 的指针。

传递引用时也会发生同样的事情:在堆栈上分配一些内存来传递引用 ab,并使用对 x< 的引用进行初始化y。此内存通常具有与指针相同的布局,但标准并不要求:用于传递引用的结构是特定于实现且不透明的。

How does call by references work?

与按值调用的工作方式相同,除了编译器知道构造一个引用,而不是复制被传递的对象。

关于c++ - C++ 中的引用调用是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48626602/

相关文章:

javascript - 处理多变量操作的更好方法?

通过引用的 JavaScript 数组/函数对象

c++ - Rand 在从最大为 75 的数字 (36) 开始时如何工作

c++ - getline 并立即测试 EOF

c++ - 返回对此的引用时出现意外的 std::ostream 输出

C#7 'in' 允许运算符重载的参数

c++ - dynamic_pointer_cast 的模板参数

c++ - 继承的功能不算实现吗?

c++在程序中使用私有(private)类数据

c++ - 在类中存储对对象的 const 引用