Die Motivation hinter der Verlängerung der Rvalue-Lebensdauer für Const-Referenzen
Während die Entscheidung, die Lebensdauer von Provisorien zu verlängern, wenn sie an Const-Referenzen gebunden sind, viel gebracht hat Achtung, seine Begründung bleibt Gegenstand von Spekulationen. Um dieses Sprachmerkmal zu verstehen, schauen wir uns noch einmal die Geschichte und die beabsichtigten Vorteile an.
Im Jahr 1993 wurde ein Vorschlag unterbreitet, um die inkonsistente Behandlung von Provisorien bei der Bezugnahme anzugehen. Ohne diese Bestimmung hätte sich das Verbot von Referenzen auf Temporäre negativ auf die Leistung auswirken können, da es zu diesem Zeitpunkt keine Rückgabewertoptimierung (RVO) gab.
Der Grundgedanke hinter der Verlängerung der R-Wert-Lebensdauer bestand darin, unabhängig davon ein konsistentes Verhalten für Referenzen sicherzustellen ob sie an L-Werte oder Temporäre gebunden waren. Das vorzeitige Löschen der Lebensdauer eines R-Werts beim Binden an eine Referenz hätte zu unvorhersehbarem und fehleranfälligem Code geführt.
Konkret ermöglichte die Verlängerung der R-Wert-Lebensdauer, dass Objekte Implementierungsdetails vor Clients verbergen konnten. Betrachten Sie beispielsweise eine Matrixklasse, die sowohl Zeilen- als auch Spaltenvektoren zurückgibt. Um die Leistung zu optimieren, kann die Implementierung basierend auf Datenlayout-Entscheidungen entweder eine Referenz oder eine Kopie zurückgeben.
Indem der Rückgabetyp zu einer konstanten Referenz gemacht wird, können Clients sowohl Werte als auch Referenzen nahtlos akzeptieren, ohne ihren Code zu ändern. Diese Flexibilität ermöglichte es Bibliotheksautoren, die Implementierung weiterzuentwickeln, ohne bestehende Anwendungen zu beschädigen.
Zusammenfassend bestand der Grund für die Verlängerung der R-Wert-Lebensdauer für Konstantenverweise darin, konsistentes Verhalten sicherzustellen, das Verbergen von Implementierungsdetails zu erleichtern und die Abwärtskompatibilität zwischen ihnen zu wahren mögliche Implementierungsänderungen.
Das obige ist der detaillierte Inhalt vonWarum wurde die Rvalue-Lebensdauer für Const-Referenzen verlängert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!