「將函式的返回值定義為引用」是一種比較有效的做法。
例如(分析見程式的注釋):
[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 ...