爲什麼C++委員會決定const引用應該延長臨時對象的生存期?爲什麼const引用延長rvalues的生命週期?
這個事實已經在網上進行了廣泛的討論,包括這裏在stackoverflow。該權威資源解釋說,這種情況大概是這樣的GoTW:
GotW #88: A Candidate For the 「Most Important const」
什麼是這個語言功能的原理是什麼?它是否已知?
(另一種選擇將是臨時工的壽命沒有任何出處和延伸。)
我自己的寵物理論的基本原理是,這種行爲可以讓物體隱藏實現細節。通過這條規則,成員函數可以在不改變客戶端代碼的情況下,將值或常量引用返回到已經存在的值。例如,矩陣類可能能夠返回行向量和列向量。爲了最小化副本,根據實現情況(行主專欄和專欄專欄),可以將其中一個或另一個作爲參考返回。無論哪個不能被引用返回,都必須通過複製並返回該值來返回(如果返回的矢量是連續的)。庫編寫者可能希望在未來改變實現方式(行主要vs列專業),並防止客戶編寫強烈依賴於實現是主要行還是列主要的代碼。通過讓客戶接受返回值爲const ref,矩陣類可以返回const refs或值而不會對客戶端代碼做任何改變。無論如何,如果原來的基本原理是已知的,我想知道它。
使用代理對象可以更優雅地解決矩陣示例。 – 5gon12eder
你必須檢查「設計與演化的C++」的權威答案。但我強烈懷疑這個問題有一個客觀的答案 - 個人寵物理論並不重要。 – MSalters
@ 5gon12eder我認爲你所建議的是我試圖通過規定返回的矢量必須是連續的(無論出於何種原因...)的先決條件。 – Praxeolitic