關於C 中函式返回引用的討論

2021-05-23 20:27:22 字數 1145 閱讀 7764

從函式

返回引用

確保其引用的物件在函式執行完後仍然存在。

引用型別返回值的主要特徵是可以作為左值,這意味著我們可以在賦值語句的左邊使用返回引用的函式的結果。

永遠不要從函式中返回區域性變數的引用.

(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 指的是同...