引用 引用型返回值

2021-08-04 15:24:33 字數 666 閱讀 2353

•值形式的函式返回值通常都具有右值屬性,即在函式的呼叫者空間根據函式的返回型別建立乙個匿名物件,負責接收該函式的返回值

•用於接收函式返回值的匿名物件和表示式的值類似,通常只具有語句級生命期且唯讀,即所謂將亡右值

•如果函式返回的是乙個引用,那麼用於接收該返回值的就不再是乙個匿名的將亡右值物件,而是乙個引用該函式所返回引用的目標物件的引用,甚至可以是左值引用

•函式返回的左值引用可與其它任何形式的左值一樣,參與包括賦值、復合賦值、自增減等在內的各種左值運算

二.不能返回區域性變數的引用

•函式的區域性變數只具有函式級甚至塊或語句級的生命週期,函式一旦返回,所有的區域性變數即刻銷毀,即使通過返回值獲得了對它們的引用,其目標也將是未定義的

–int& foo (void) 

// 危險

int* bar (void)

// 危險

int hum (void)

–int& foo (int& n)

int& bar (int* n)

int& hum (int n)

// 危險

–int* foo (int& n)

int* bar (int* n)

int* hum (int n)

// 危險

引用引數,引用返回值

函式形參詩引用,程式輸出如程式最後的注釋,表明引用s代表的是物件s2.函式中的引用 includeusing namespace std class sample sample sample a x a.x int getx 形參為引用 void disp sample s void disp sa...

引用引數與引用返回值

經常看到這樣的宣告 t func t t 這種宣告和t func t t 有什麼區別?書上的解釋是為 了提高效率,究竟是如何提高效率的呢?內部執行了什麼操作?本文通過8個小例子對引用引數 和引用返回進行了一次徹底的排查。首先看一下在類的成員函式中的引用引數和引用返回值 類定義class a 建構函式...

c 引用返回值

函式返回值時,要生成乙個值的副本。而用引用返回值時,不生成值的副本。例如,下面的程式是有關引用返回的4種形式 ch9 6.cpp include float temp float fn1 float r float fn2 float r void main void main 見圖9 9說明。圖9...