一:
可以把函數定義為引用類型,這時函數的返回值即為某一變量的引用(別名),因此,它相當於返回了一個變量,所以可對其返回
值進行賦值操作。這一點類同於函數的返回值為指針類型。 由於函數調用返回的引用類型是在函數運行結束後產生的,所以函數不
能返回自動變量和形參。返回的變量的引用,這個變量必須是全局變量或靜態局部變量,即存儲在靜態區中的變量。
看個例子:
[cpp] view plaincopy
/*
* main.cpp
*
* Created on: 2012-9-18
* Author: china
*
* 注意:由於函數調用返回的引用類型是在函數運行結束後產生的,所以函數不能返回自動變量和形參。
返回的變量的引用,這個變量必須是全局變量或靜態局部變量,即存儲在靜態區中的變量。
*
*/
#include <iostream>
using namespace std;
int a = 4;
//函數返回a的引用,即a的別名!!!!
int &f(int x) {
//static int a=4; 和全局變量的效果一樣哦
a = a + x;
return a;
}
int main(int argc, char **argv) {
int t = 5;
cout << f(t) << endl;//輸出 9 (a=9) t=5
f(t) = 20;//先調用,再賦值 a=20 t=5
cout << f(t) << endl;//輸出25 (a=25) t=5
t = f(t);//先調用,再賦值 a=30,t=30
cout << f(t) << endl;//60
return 0;
}
(二):我們都知道,函數作為一種程序實體,它有名字、類型、地址和存儲空間,一般說來函數不能作為左值(即函數不能放在
賦值號左邊)。但如果將函數定義為返回引用類型,因為返回的是一個變量的別名,就可以將函數放在左邊,即給這個變量賦值。
eg:
[cpp]
eg:/*
* main.cpp
*
* Created on: 2012-9-18
* Author: china
*
* 我們都知道,函數作為一種程序實體,它有名字、類型、地址和存儲空間,
* 一般說來函數不能作為左值(即函數不能放在賦值號左邊)。但如果將函數定義為返回引用類型,
* 因為返回的是一個變量的別名,就可以將函數放在左邊,即給這個變量賦值。
*
*/
#include <iostream>
using namespace std;
int &f(int &x);
int main(int argc, char **argv) {
int a=3;
cout<<f(a)<<endl;//a=4,輸出3
f(a)=20;//先調用後賦值a=5
a+=5;//a=10
cout<<f(a)<<endl;//10
a=f(a);//a=11,先調用後賦值
cout<<f(a)<<endl;//11,a=12
return 0;
}
int &f(int &x)
{
static int t=2;
t=x++;
return t;
}