將函式的返回值引用定義為引用

2021-06-27 07:25:32 字數 1332 閱讀 3995

「將函式的返回值定義為引用」是一種比較有效的做法。

例如(分析見程式的注釋):

[cpp]view plain

copy

print?

#include

#include

using

namespace

std;  

char

& get_val(string &str,

inti)

//返回型別為引用

intmain()    

對比一下沒有返回引用的情況:

[cpp]view plain

copy

print?

#include

#include

using

namespace

std;  

char

get_val(string &str,

inti)

//返回型別不為引用

intmain()    

顯然這種函式返回值為引用的方法大有用武之地,最常見的就是用在過載流插入/提取運算子函式中,例如:

[cpp]view plain

copy

print?

ostream & operate <<(ostream &output, complex &c)

//定義流提取運算子「<<」過載函式

cout因為輸出c3後緊接著要輸出c2,所以要求cout<

請自行分析下面的程式:

[cpp]view plain

copy

print?

int&func(

int& a)  

void

main()     

執行的結果為:

0012ff7c, 0012ff7c, 0012ff78

a和b的位址不等。

返回指標的情形

例如:[cpp]view plain

copy

print?

#include 

char

*retmemory()  

void

main( )    

分析:str能得到p嗎?不能!因為函式呼叫結束後p的記憶體就被**了,所以最好是利用傳引數的形式定義p或者將p定義為全域性變數。

所以要避免返回 指向函式內部定義的變數或字串常量 的指標。

end

將函式的返回值引用定義為引用

將函式的返回值定義為引用 是一種比較有效的做法。例如 分析見程式的注釋 include includeusing namespace std char get val string str,int i 返回型別為引用 int main int main void main 執行的結果為 0012ff...

14 函式返回值為引用?

函式返回值可以是引用嗎?當然可以,只是在函式返回引用的時候需要注意幾點。以下給出討論!函式在返回值的時候,會產生乙個臨時變數作為函式返回值的副本 而函式在返回引用的時候,不會產生副本!那麼既然是引用,那麼到底是引用誰呢?首先,我們知道要清楚函式返回引用的幾種常見形式 1 引用函式的引數,當然該引數 ...

c 返回值為引用

與返回原值的區別 return的位址和返回值的位址是同乙個,也就是佔據著同一塊記憶體,因此要求此時return的東西必須是乙個實體 有儲存位址 不能是乙個作用域僅在函式中的區域性變數 例如 int fun a fun 就會報錯。因為a找不到它應該存在的位址在 int fun int c a fun ...