C++ const引用


編譯器會為const引用創建臨時變量

當使用const關鍵字對引用加以限定后,引用就可以綁定到臨時數據了。為什么?

編譯器會為臨時數據創建一個新的、無名的臨時變量,並將臨時數據放入該臨時變量中,然后再將引用綁定到臨時變量。注意,臨時變量也是變量,所有的變量都會被分配內存。

為什么編譯器為常引用創建臨時變量是合理的,而為普通引用創建臨時變量就不合理呢?

我們知道,將引用綁定到一份數據后,就可以通過引用對這份數據進行操作了,包括讀取和寫入(修改);尤其是寫入操作,會改變數據的值。而臨時數據往往無法尋址,是不能寫入的,即使為臨時數據創建了一個臨時變量,那么修改的也僅僅是臨時變量里面的數據,不會影響原來的數據,這樣就使得引用所綁定到的數據和原來的數據不能同步更新,最終產生了兩份不同的數據,失去了引用的意義。

const 引用和普通引用不一樣,我們只能通過 const 引用讀取數據的值,而不能修改它的值,所以不用考慮同步更新的問題,也不會產生兩份不同的數據,為 const 引用創建臨時變量反而會使得引用更加靈活和通用。

const引用與類型轉換

給引用添加 const 限定后,不但可以將引用綁定到臨時數據,還可以將引用綁定到類型相近的數據,這使得引用更加靈活和通用,它們背后的機制都是臨時變量。

注意:引用類型的函數形參盡可能地使用const


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM