我对从函数返回对局部变量的引用有一些疑问:
class A {
public:
A(int xx)
: x(xx)
{
printf("A::A()\n");
}
};
const A& getA1()
{
A a(5);
return a;
}
A& getA2()
{
A a(5);
return a;
}
A getA3()
{
A a(5);
return a;
}
int main()
{
const A& newA1 = getA1(); //1
A& newA2 = getA2(); //2
A& newA3 = getA3(); //3
}
我的问题是=>
执行是否
getA1()
正确?我觉得这是不正确的,因为它返回的是局部变量或临时变量的地址。(1,2,3)中的哪些语句
main
会导致未定义的行为?标准是否保证在
const A& newA1 = getA1();
引用超出范围之前不会破坏由 const 引用绑定的临时绑定?