Возвращение константной ссылки на локальную переменную из функции
У меня есть несколько вопросов по возвращению ссылки на локальную переменную из функции:
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()
верный? Я чувствую, что это неверно, так как он возвращает адрес локальной переменной или временный.
Какое из утверждений вmain
(1,2,3) приведет к неопределенному поведению?
Вconst A& newA1 = getA1();
гарантирует ли стандарт, что временная привязка константной ссылкой не будет уничтожена, пока ссылка не выйдет из области видимости?