Warum nicht konstante Referenzen auf temporäre Objekte verboten sind
C verbietet die Zuweisung temporärer Objekte zu nicht konstanten Referenzen. Diese Einschränkung ergibt sich aus der Tatsache, dass temporäre Objekte nach der Anweisung, in der sie erstellt wurden, verschwinden. Das Zulassen nicht konstanter Referenzen auf temporäre Objekte könnte zu undefiniertem Verhalten führen.
Beachten Sie den folgenden Code:
String& a = String("test"); // Error
Dieser Code versucht, ein temporäres String-Objekt einer nicht konstanten Referenz a zuzuweisen . Dies ist jedoch nicht zulässig, da a keine konstante Referenz ist und temporäre Objekte nicht geändert werden können.
Einige häufige Gründe für diese Einschränkung sind:
C erlaubt das Lesen von temporären Objekten, aber nicht das Schreiben auf sie, da dies beim Lesen der Fall ist den Zustand des Objekts nicht verändern. Das Schreiben in ein temporäres Objekt könnte jedoch unerwartete Folgen haben, da das Objekt möglicherweise zerstört wird, bevor der Schreibvorgang abgeschlossen ist.
Um diese potenziellen Probleme zu verhindern, beschränkt C daher nicht konstante Verweise auf temporäre Objekte, solange diese noch vorhanden sind Zulassen konstanter Referenzen für sichere Lesezwecke. Diese Einschränkung trägt dazu bei, die Programmkorrektheit sicherzustellen und undefiniertes Verhalten zu verhindern, das aus der Änderung temporärer Objekte resultieren könnte.
Das obige ist der detaillierte Inhalt vonWarum kann ich in C keine temporären Objekte Nicht-Const-Referenzen zuweisen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!