当我在C++中使用引用时,内存中会发生什么?

当我在C++中使用引用时,内存中会发生什么?,c++,reference,C++,Reference,让我先说我理解指针。我知道它们是什么,它们是如何工作的。但我了解它们,因为我可以通过保存其他东西的地址等方式,直观地想象它们是如何在内存中使用的 我试图在网上找到信息,我似乎可以找到任何关于如何对待推荐人的信息 有人能联系或解释一下他们是如何在考虑内存管理的情况下工作的吗 thx引用只是一个有着薄薄一层结构的指针 将引用视为普通指针,但每次引用引用时,会自动使用解引用运算符*: int a; int &aref=a; 这实际上与: int a; int *aref= &am

让我先说我理解指针。我知道它们是什么,它们是如何工作的。但我了解它们,因为我可以通过保存其他东西的地址等方式,直观地想象它们是如何在内存中使用的

我试图在网上找到信息,我似乎可以找到任何关于如何对待推荐人的信息

有人能联系或解释一下他们是如何在考虑内存管理的情况下工作的吗


thx

引用只是一个有着薄薄一层结构的指针

将引用视为普通指针,但每次引用引用时,会自动使用解引用运算符*:

 int a;

 int &aref=a;
这实际上与:

 int a;

 int *aref= &a;
除了每次引用aref时,都会应用*运算符,所以

 void some_function_call(int);

 some_function_call(aref);
这里真正发生的是什么,aref是一个指针:

 some_function_call(*aref);

如果您要接受任何C++程序,用指针声明和操作符的地址替换每个引用声明来初始化它,然后在每个引用中附加一个**操作符,现在使用一个指针,最终结果将是逻辑上相同的。编译器开发人员可能会创造性地使用可用的CPU指令集。有关稍微不同的视图,请参阅@Sam Sigh!我们不需要为每一个问题都写一个答案:你会重写const int&x=42;指向指针声明?谁会想做如此愚蠢的事情?@cpplearner const int\u tmp=42;常数int*x=&u tmp;既然基本上就是这样。@Kevin Good,那么[]const std::string&{}什么呢?