引用指向哪里?

Sus*_*lik 5 c++ memory-address

我不确定我是否正确理解了堆栈。对于复数 a 和 b(a=3+5i 和 b=2+i),我有以下运算符重载。

struct complex{
int x;
int y;
};

complex& operator+=(complex& a, const complex b){
a.x=a.x+b.x;
a.y=a.y+b.y;
return a; 
}
Run Code Online (Sandbox Code Playgroud)

现在我想知道返回值的引用指向哪里。

我认为在主堆栈帧中有一个用于 a = ax 和 64 位 ay 的内存区域,因为 ax/ay 是 int 类型。而operator+=stack-frame中的返回值a指向这个“a”-内存区域。

我想知道“a”-memory-area 是什么样子的,复杂类型的对象是如何存储在主堆栈框架中的?

它是像一个数组,引用指向“a[0]”还是 ax 和 ay 分开,你需要“两个”引用指针来指向复杂类型的对象。

vz0*_*vz0 2

a是对用于调用 with 的变量的引用operator +=

complex w, p;

void f() {
  w.x = w.y = 0;
  p.x = 1; 
  p.y = 0;
  w += p;
}
Run Code Online (Sandbox Code Playgroud)

参数aonoperator +=是 的别名w,参数b是 的别名p