referenzen auf lokale variablen



  • ist das definiertes verhalten oder ist es wie bei zeigern undefiniert?

    int& f()
    {
        int a = 123;
        return a;
    }
    int main()
    {
        int a = f();
    }
    


  • Undefiniert.
    Wenn du irgendwann

    int &&f()
    {
        int a = 123;
        return a;
    }
    

    findest, das ist auch undefiniert.



  • Die entscheidende Frage ist, ob das lokale Objekt a zerstört wird, bevor oder nachdem die Initialisierung stattfindet. Die Antwort ist: Davor. Und damit hast du ein glvalue das auf freigegebenen Speicher zeigt - was bei Zuweisung in undefiniertem Verhalten resultiert.



  • okay, danke für die antworten. werde es in meinem fall einfach mit einer kopie machen


Log in to reply