为什么C++中不能通过引用返回局部变量


#include<iostream>
using namespace std;
struct A{

int x;
int y;

A(){

}

A(int a, int b){
x = a;
y = b;
}
};
ostream& operator << (ostream& COUT, A& a){
COUT<<a.x<<' '<<a.y<<endl;
return COUT;
}
A operator + (A& a, A& b){
A temp;
temp.x = a.x + b.x;
temp.y = a.y + b.y;
return temp;
}
int main(){
A a(12, 15);
A b(20, 23);
cout<<a<<b;
A result = a + b;
cout<<result;
return 0;
} 

在这段代码中,如果我不使用运算符+(A&A,A&b(,而是通过引用返回,则会显示一个错误。有人能告诉我为什么我不能通过引用返回一个局部变量吗?谢谢。

局部变量通常存储在堆栈帧中,因此引用指向堆栈中的某个位置,这些值很可能会被下一次调用覆盖。

最新更新