Gibt einen konstanten Verweis auf eine lokale Variable aus einer Funktion zurück

Ich habe einige Fragen zum Zurückgeben eines Verweises auf eine lokale Variable von einer Funktion:

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
}

Meine Fragen sind =>

Ist die Umsetzung vongetA1() richtig? Ich halte es für falsch, da es die Adresse einer lokalen Variablen oder temporären zurückgibt.

Welche der Aussagen inmain (1,2,3) wird zu undefiniertem Verhalten führen?

Imconst A& newA1 = getA1(); Gewährleistet der Standard, dass eine temporäre Bindung durch eine konstante Referenz nicht zerstört wird, bis die Referenz ihren Gültigkeitsbereich verlässt?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage