Zuweisung eines von der Funktion zurückgegebenen R-Werts an einen anderen R-Wert

class Test {

public:

    int n1;

};

Test func() {

    return Test();

}

int main() {

    func() = Test();

}

Das ergibt für mich keinen Sinn. Wie und warum ist das erlaubt? Ist es undefiniertes Verhalten? Wenn eine Funktion einen Wert zurückgibt, wie ist es dann möglich, einen Wert auf einen anderen Wert zu setzen? Wenn ich dies mit primitiven Typen versuchen würde, würde ich einen erwartungsgemäßen Fehler erhalten.

Ich weiß, dass lWerte ein Ort im Speicher sind. Erstellt die Funktion einen temporären lWert (rWert?) Und weist ihn einem anderen lWert zu? Kann jemand erklären, wie diese Syntax funktioniert?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage