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 分开,你需要“两个”引用指针来指向复杂类型的对象。
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。
| 归档时间: |
|
| 查看次数: |
119 次 |
| 最近记录: |