c – 参考指向哪里?

我不确定我是否理解了堆栈.我有以下操作符

复数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; 
}

现在我想知道返回值的参考指向哪里.

我认为在主堆栈框架中有一个a = a.x和a的内存区域
a.y为64位,因为a.x / a.y的类型为int.并且返回值a
在operator = stack-frame中指向这个“a” – 存储区域.

我想知道“a” – 记忆区域是什么样的,以及如何成为对象
类型复合体存储在主堆栈框架中?

它是否像一个数组,引用指向“a [0]”或是a.x和
a.y separeted,你需要“两个”参考指针指向一个
复杂的对象.

最佳答案 a是对用于调用operator = with的变量的引用.

complex w, p;

void f() {
  w.x = w.y = 0;
  p.x = 1; 
  p.y = 0;
  w += p;
}

operator =的参数a是w的别名,参数b是p的别名.

点赞