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

2021-09-14 00:33:27 字數 681 閱讀 5411

/*函式返回值是引用(引用當左值)

當乙個物件被用作右值的時候,用的是物件的值(內容),

當物件被用作左值的時候,用的是物件的身份(在記憶體中的位置)。這個定義不太準確,具體的在以後的內容再提及  

c++引用使用時的難點

當函式返回值為引用的時候:

一:若返回棧變數:1:不能成為其他引用的初始值  2:不能作為左值使用

二:若返回靜態變數或全域性變數:1:可以成為其他引用的初始值

2:可作為右值使用,也可作為左值使用 

記憶體5區:棧區,堆區,全域性區(靜態區),文字常量區,程式**區; */ 

#include

using namespace std;

int getaa1()

int& getaa2()//返回乙個a的記憶體空間,也就是a本身 

int* getaa3()//返回乙個指標,就是記憶體的首位址 

int main01()

//返回變數是靜態變數或者全域性變數。 

int j1()

int& j2()

int main02()

//函式當左值

int g1()//返回乙個變數的值 

int& g2()//返回變數自身a;返回變數所標識的記憶體空間 

int main()

//關於指標的引用和常引用下次再說。 

當函式返回值是引用

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

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

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

面試題 什麼是右值引用?右值引用與左值引用的區別

什麼是左值引用呢?左值引用,就是繫結到左值的引用,通過 來獲得左值引用。那麼,什麼是左值呢?左值,就是在記憶體有確定儲存位址 有變數名,表示式結束依然存在的值。左值可以分為兩類 非常量左值和常量左值 同理,右值也可以分為兩類 非常量右值和常量左值。左值引用舉例說明 int a 10 非常量左值 有確...