Verlängerung der Rvalue-Lebensdauer durch Const-Referenzen
In C dienen Const-Referenzen nicht nur als unveränderliche Aliase, sondern verlängern auch die Lebensdauer von Provisorien. Warum hat das C-Komitee beschlossen, dieses Verhalten zu implementieren?
Ein Grund für diese Funktion besteht darin, Implementierungsdetails vor Klassen und Funktionen zu verbergen. Stellen Sie sich eine Matrixklasse vor, die Zeilenvektoren oder Spaltenvektoren zurückgeben kann. Um die Leistung zu optimieren, kann sich die Klasse dafür entscheiden, einen Verweis auf einen internen Wert basierend auf ihrer zeilen- oder spaltenorientierten Organisation zurückzugeben. Dadurch, dass Clients Rückgabewerte als konstante Referenzen akzeptieren müssen, kann die Klasse nahtlos zwischen Referenzen und Werten wechseln und Clients vor Implementierungsdetails schützen.
Historisch gesehen entstand die Entscheidung, die Lebensdauer von R-Werten zu verlängern, aus dem Wunsch heraus, Inkonsistenzen in der Art und Weise zu beheben Referenzen verwalteten Provisorien im Jahr 1993. Damals gab es RVO (Return Value Optimization) noch nicht. Das Verbot der Bindung von Zeitarbeitskräften an Referenzen hätte die Leistung erheblich beeinträchtigt. Daher entschied sich das Komitee für eine Lösung, die die Bindung ermöglichte und gleichzeitig die Lebensdauer von Provisorien verlängerte, um deren Verfügbarkeit während der Referenzverwendung sicherzustellen.
Diese Begründung ist im Vorschlag N0345.pdf dokumentiert, der 1993 dem C-Normungsausschuss vorgelegt wurde . Durch die Verlängerung der Lebensdauer von R-Werten ermöglichen konstante Referenzen eine bessere Abstraktion, bewahren die Codeflexibilität und optimieren die Leistung bei der Rückgabe von Objekten aus Funktionen.
Das obige ist der detaillierte Inhalt vonWarum verlängern Const-Referenzen die Lebensdauer von Temporären in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!