/*函式返回值是引用(引用當左值)
當乙個物件被用作右值的時候,用的是物件的值(內容),
當物件被用作左值的時候,用的是物件的身份(在記憶體中的位置)。這個定義不太準確,具體的在以後的內容再提及
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 非常量左值 有確...