C++ 引用作為返回值&左值和右值的區(qū)別
C++ 引用
通過使用引用來替代指針,會使 C++ 程序更容易閱讀和維護。C++ 函數(shù)可以返回一個引用,方式與返回一個指針類似。
當函數(shù)返回一個引用時,則返回一個指向返回值的隱式指針。這樣,函數(shù)就可以放在賦值語句的左邊。例如,請看下面這的程序:
左值和右值
1、為什么element函數(shù)返回對象的引用?
這里返回實際上是一個數(shù)組元素,比如points.element(0),它是一個point這個object下標為0的元素。
我們訪問一個數(shù)組,它需要是左值,例如a[2]=4,a[2]在賦值運算符左邊,所以我們需要它是左值,而不帶引用的函數(shù)返回的一個this.object,是一個對象臨時副本,也就是右值。
結論:返回“引用”可以用來操作封裝數(shù)組對象內(nèi)部的數(shù)組元素。如果返回“值”則只是返回了一個“副本”,通過“副本”是無法操作原來數(shù)組中的元素的。
2、對左值和右值定義
左值:是指表達式結束后依然存在的持久對象,有內(nèi)存地址的表達式,可以出現(xiàn)在等號的左邊和右邊
右值:指表達式結束時就不再存在的臨時對象,沒有內(nèi)存地址的表達式,只能出現(xiàn)在等號的右邊
左值和右值都是針對表達式而言的,顯然右值不可以被取地址。

參考:C++新標準001_“左左右右分不清”右值引用_嗶哩嗶哩_bilibili
標簽: