Warum nicht non-const Verweis auf temporäre Objekte? [Duplikat]
C ++ erlaubt die Zuweisung temporärer Objekte nur an const reference. Es wird nicht möglich sein, temporäre Objekte zu referenzieren.
Zum Beispiel:
String& a = String("test"); // Error
const String& a = String("test"); // Ok
Überall, wo ich nach diesem Ergebnis google, sehe ich nur die folgenden Antworten
Das Ändern temporärer Objekte würde zu nicht identifizierbaren Problemen führenDas Ändern temporärer Objekte ist gefährlichIrgendwann werden Sie vergessen, dass es sich um eine temporäre Variable handeltEs wurde gesagt, temporäre Objekte verschwinden nach der Aussage. Sie sollten es also nicht ändern.
Wenn C ++ so sehr daran interessiert ist, das Ändern der temporären Objekte zu blockieren, sollte es das Lesen der temporären Objekte blockiert haben, oder? Wenn das temporäre Objekt verschwunden ist, hat es keinen Sinn, Inhalte von dort aus zu lesen, oder? Zu den möglichen Fällen, in denen ein Recht auftreten kann, könnte auch das Lesen gehören.
Warum blockiert es dann das Schreiben alleine und erlaubt das Lesen?
Bitte geben Sie mir eine solide C ++ - Code-Erklärung.
Bitte lenken Sie die Frage nicht ab, indem Sie einige Alternativen nennen. Bitte geben Sie mir eine solide Antwort mit Code, warum const int & zulässig ist und int & für temporäre Objekte nicht zulässig ist.
Man sagt, && ist da. Meine Frage ist anders. Ein anderes Wort, Ändern wird nicht reflektieren. Ändern wird nicht reflektieren, selbst wenn es const int & zu ist. ZB: double a; Const int & i = a; a ++; wirkt sich nicht auf i ..