有代码
int test(){
return 5;
}
和
int main(){
const int & t = test();
cout << &t << endl;
}
通过标准,我们可以将临时对象分配给const&amp;变量并将它们的寿命延长到const&amp;的生命周期。变量
这是否意味着const&amp;内存(内存地址)与返回值(临时对象)具有相同的位置?
E.g
如果我想从func返回值,它会被复制到寄存器中,然后被分配给变量,这意味着内存位置不一样,或者它是在堆栈上创建的,只是const&amp;变量是内存中该位置的别名吗?
为什么需要const
,这只是c ++实现它的方式?
感谢您的回答。
答案 0 :(得分:0)
int
通常作为寄存器返回,因此编译器将创建一个新的临时存储结果。
返回的对象可能没有存储空间,因此严格来说不一定是相同的地址
答案 1 :(得分:0)
当按值返回时,结果位于临时分配的堆栈变量中,或者可能是寄存器中的int
之类的简单类型(我认为它是特定于编译器的)。
内部引用只不过是一个被语言语法禁止为null
的指针。
所以:返回的值是临时分配在堆栈上的,const &
也是指向堆栈的指针指向临时变量。