將引用作為函數(shù)返回值

將引用作為函數(shù)返回值

ID:34296329

大?。?6.30 KB

頁數(shù):4頁

時間:2019-03-04

將引用作為函數(shù)返回值_第1頁
將引用作為函數(shù)返回值_第2頁
將引用作為函數(shù)返回值_第3頁
將引用作為函數(shù)返回值_第4頁
資源描述:

《將引用作為函數(shù)返回值》由會員上傳分享,免費在線閱讀,更多相關內容在應用文檔-天天文庫

1、將引用作為函數(shù)返回值要以引用返回函數(shù)值,則函數(shù)定義時必須遵循以下格式:?類型標識符&函數(shù)名(形參列表及類型說明){//函數(shù)體}?可見,以引用返回函數(shù)值,定義函數(shù)時需要在函數(shù)名前加&。引用作為函數(shù)的返回值時,函數(shù)的返回值可以理解為函數(shù)返回了一個變量(事實上,函數(shù)返回引用時,它返回的是一個指向返回值的隱式指針),因此,值為引用的函數(shù)可以用作賦值運算符的左操作數(shù)。另外,用引用返回一個函數(shù)值的最大好處是,在內存中不產(chǎn)生被返回值的副本。?#include???usingnamespacestd;?int

2、&func(){staticintnum=0;???????return++num;}???voidmain(){???????inti;????????for(i=0;i<5;i++)???????????cout<

3、nc被當作賦值運算符的左操作數(shù)來使用了。圖13.1程序輸出結果?下面再給出一個使用返回引用的函數(shù)作為左值的例子,它更有力地揭示了返回引用的函數(shù)的本質。?#includeusingnamespacestd;?doublearray[5]={100.1,100.2,100.3,100.4,100.5};?double&change(inti){???????returnarray[i];}?intmain(){???????inti;????cout<<"原始值如下:";???????for(i=

4、0;i<5;i++)???????????cout<

5、該值又是一個由其參數(shù)i指定的數(shù)組array中元素的引用。因此,在主函數(shù)中,當語句“change(2)=3.14;”被執(zhí)行時,change函數(shù)返回的其實是對數(shù)組元素array[2]的引用。通過這個引用,array[2]被賦值3.14。隨后的語句“change(3)=-99.99;”同此原理。由于change返回的是數(shù)組中特定元素的引用,所以該函數(shù)可以放在賦值語句的左邊用來對這個數(shù)組元素進行賦值。注意前面講過沒有數(shù)組的引用,但是指向數(shù)組元素的引用時存在的。?在把引用作為返回值時有些一些地方需要提醒大家注意。?首先,不

6、能返回局部變量或臨時變量的引用,但可以返回全局變量的引用,也就是說要注意被引用的對象不能超出作用域。主要原因是局部變量會在函數(shù)返回后被銷毀,因此被返回的引用就成為了“無所指”的引用,這是不被允許的。例如下面這段代碼就是錯誤的:?int&func(){???inti=10;???returni;}?在VisualC++6.0中,上述代碼在編譯時會拋出警告“warningC4172:returningaddressoflocalvariableortemporary”,盡管編譯器沒有報錯,但這仍然意味著一種不安定。而

7、且在VisualC++6.0中實驗上述func()函數(shù)作為左值來使用的情況,結果表明賦值并未成功,這同樣告誡我們這種用法是絕對應當被禁止的。畢竟,當函數(shù)func()返回時,局部變量i就超出了作用域。于是由func()返回的對i的引用就是未定義的引用。而且,某些對標準C++支持更強的編譯器中會對上述func()作左值的情況報錯!另外,這類問題也可能會間接產(chǎn)生,這時的錯誤顯得更加隱蔽而不容易被發(fā)現(xiàn),所以當返回對一個對象的引用時,務必要仔細檢查這個對象是否會超出作用域。?其次,不能返回函數(shù)內部動態(tài)分配的內存的引用。雖然

8、不存在局部變量的被動銷毀的問題,但是在此種情況下,仍然存在一些問題。例如,被函數(shù)返回的引用只是作為一個臨時變量出現(xiàn),而沒有被賦予一個實際的變量,那么這個引用所指向的由new分配的空間就無法被釋放,從而造成內存泄漏問題。?最后,可以返回類成員的引用,但最好是const常量。這是因為當對象的屬性是與某種業(yè)務規(guī)則相關聯(lián)的時候,其賦值常常與某些其它屬性或者對象的狀態(tài)有關,于是有必

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現(xiàn)內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。