参考指向哪里
Where does the reference points to?
本文关键字:参考 更新时间:2023-10-16
我不确定我是否正确理解了堆栈。我有以下运算符复数 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.y 为 64 位,因为 a.x/a.y 是 int 类型。和返回值 a在运算符中+=堆栈帧指向这个"a"内存区域。
我想知道"a"记忆区域是什么样子的,对象如何类型复合体存储在主堆栈框架中?
它像一个数组,引用指向"a[0]"还是a.x和a.y 分开,您需要"两个"引用指针来指向复杂类型的对象。
a
是对用于调用operator +=
的变量的引用。
complex w, p;
void f() {
w.x = w.y = 0;
p.x = 1;
p.y = 0;
w += p;
}
参数 a
on operator +=
是 w
的别名,参数 b
是 p
的别名。
复杂对象的内存映射看起来像内存地址的集合,它将依赖于实现。数组定义仅保证保存连续的内存位置。复杂对象的内存布局不需要在连续内存位置分配。
运算符重载函数的返回地址应该是根据您的实现第一个对象复杂对象 a 的地址。
相关文章:
- C++错误消息*成员参考.**初学者*
- 在决定是通过参考还是通过价值时,尺寸真的是一个问题吗
- 参考资源文件VC++中的$(SolutionDir)
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- 为什么在运算符重载时需要参考?
- 使 \page 和 \subpage 参考 doxygen 中的方法文档
- std::shared_ptr 自定义参考计数器
- 英特尔 TBB 程序不会终止,可能会误用参考计数器
- 避免在基于反向范围的for循环实现中悬挂参考
- 通用参考 l 值不复制对象
- 标准::enable_if和通用参考的使用差异
- 标准::积累参考?
- C++丢失了参考
- 我可以有一个 ELI5 作为参考和指针以及何时使用它们吗?
- 矢量的通用参考
- 为什么"fun(i)"被推导出为"fun<int&>"而不是"fun<int>",因为"i"是"int"的类型而不是参考?
- C++17 和静态临时生存期的参考扩展
- C++ 参考:这两个语句有什么区别?
- 如何理解 C++17 标准参考中的 [intro.object]/3? N4659 的
- 是否有必要使用 std::move?这不是已经是一个右值参考了吗?