從函式
返回引用
確保其引用的物件在函式執行完後仍然存在。
引用型別返回值的主要特徵是可以作為左值,這意味著我們可以在賦值語句的左邊使用返回引用的函式的結果。
永遠不要從函式中返回區域性變數的引用.
(1)首先,
返回引用,要求在函式的引數中,包含有以
引用方式或
指標方式存在的,需要被返回的引數。比如:
int& abc(inta,intb,intc,int& result)
這種形式也可改寫為:
int& abc(inta,intb,intc,int*result)
但是,如下的形式是不可以的:
int& abc(inta,intb,intc)
眾所周知,c++函式可以傳入引用引數和
返回引用。
函式引用引數避免了過多的指標操作,對加強函式的可讀性很有幫助;另外,在傳入體積很大的型別的變數時,引用引數可以避免拷貝物件,加快程式執行效率。
函式支援引用型的返回值是為什麼呢?這個問題要一分為二:對於類型別的引用返回值,函式可以在使用過載運算子的串聯表示式中使用,而不用擔心構造多個物件。
#include
#include
using namespace std;
class rec
執行結果:
&obj = 0xbf90e338
ptr = 0xbf90e338
&ano = 0xbf90e330
可見,紅色**只會生成乙個物件,綠色**部分需要呼叫拷貝建構函式。因為fucrec傳入引用引數,
返回引用物件。如果返回的不是引用物件,那麼在
語句rec *ptr = &( funrec(obj) );
編譯不過
。
關於C 中函式返回引用的討論
從函式返回引用 確保其引用的物件在函式執行完後仍然存在。引用型別返回值的主要特徵是可以作為左值,這意味著我們可以在賦值語句的左邊使用返回引用的函式的結果。永遠不要從函式中返回區域性變數的引用 c 中,返回引用是乙個比較晦澀的概念。在書中,對此僅僅做了乙個一般的介紹,並沒有展開。我覺得有必要對此進行一...
關於C 中函式返回引用的討論
從函式返回引用 確保其引用的物件在函式執行完後仍然存在。引用型別返回值的主要特徵是可以作為左值,這意味著我們可以在賦值語句的左邊使用返回引用的函式的結果。永遠不要從函式中返回區域性變數的引用 c 中,返回引用是乙個比較晦澀的概念。在書中,對此僅僅做了乙個一般的介紹,並沒有展開。我覺得有必要對此進行一...
C 中函式返回引用
下面兩個 是在類中的成員函式,而m data 變數為類的私有成員變數。int at intat 上面兩個函式,第乙個返回值是int的引用int 第二個返回值是int,但是二者有什麼區別?返回值為引用型 int 的時候,返回的是位址,因為這裡用的是 int a a.at 所以a和m data 指的是同...