當函式返回值是引用

2022-04-12 01:02:42 字數 662 閱讀 7431

同其他引用型別一樣,如果函式返回引用,則該引用僅是它所引物件的乙個別名。舉個例子來說明,假定某函式挑出兩個string 形參中較短的那個並返回其引用:函式的返回型別決定函式呼叫是否是左值。

const string &shorterstring(const string &s1, const string &s2)
其中形參和返回型別都是 const string 的引用,不管是呼叫函式還是返回結果都不會真正拷貝 string物件。

呼叫乙個返回引用的函式得到左值,其他返回型別得到右值。

可以像使用其他左值那樣來使用返回引用的函式的呼叫,特別是,我們能為返回型別是非常量引用的函式的結果賦值∶

char &get_val(string &str, string::size_type ix)

int main()

把函式呼叫放在賦值語句的左側可能看起來有點奇怪,但其實這沒什麼特別的。

返回值是引用,因此呼叫是個左值,和其他左值一樣它也能出現在賦值運算子的左側。

如果返回型別是常量引用,我們不能給呼叫的結果賦值,這一點和我們熟悉的情況是一樣的∶

shorterstring("hi", "bye") = "x";     // 錯誤:返回值是乙個常量

函式的返回值是引用(當左值當右值)

函式返回值是引用 引用當左值 當乙個物件被用作右值的時候,用的是物件的值 內容 當物件被用作左值的時候,用的是物件的身份 在記憶體中的位置 這個定義不太準確,具體的在以後的內容再提及 c 引用使用時的難點 當函式返回值為引用的時候 一 若返回棧變數 1 不能成為其他引用的初始值 2 不能作為左值使用...

C 基礎07 引用函式返回值 引用當左值

當函式返回值為引用時 若返回棧變數 不能成為其它引用的初始值 不能作為左值使用 若返回靜態變數或全域性變數 可以成為其他引用的初始值 即可作為右值使用,也可作為左值使用 int geta1 若返回棧變數 不能成為其他引用變數的初始值 返回a引用 就是返回a的本身 返回a的乙個副本 10 int ge...

函式返回值是 函式名

高階函式應用2 把函式名當作引數傳給高階函式,高階函式直接返回函式名 import time def foo print from the foo def timmer func start time time.time return func stop time time.time print 函...