5 回答

TA貢獻1963條經驗 獲得超6個贊
&表示引用?!?amp;變量名”,就相當于給變量取的一個別名。因為主程序向子程序傳遞形參后不改變原變量的值。如果想改變原變量的值,就要用指針來傳遞變量的地址從而改變變量的值。但用指針的話可讀性就不是太好,所以用“&變量名”作為變量的別名,既能改變原變量的值,也好讓人看懂,就是可讀性強,程序就簡潔易懂多了。

TA貢獻1784條經驗 獲得超2個贊
打個比方說,現在有個類:class A{};
A &a這個時候a是A的別名,相當于給類A又起了個名字,以后對a的操作都是對A的操作,一般情況下是用在函數形參的時候,在函數中操作類相當操作實參的類,和指針比起來,效率更快,因為是別名,不用分配新的內存。

TA貢獻1942條經驗 獲得超3個贊
是引用的意思,一般對于類或者結構體變量,如果直接返回,是有些問題的,所以我們一般用指針或者引用返回。C++推薦用引用返回,因為其實效率上和指針類似,又避免了指針的一些問題。你看多了就習慣了。
比如,要把這個類增加個重載運算符<<,也是這樣寫:
class Screen {
...
friend ostream & operator << (ostream & o, Screen & s)
{
o << "[" << s.x << "," << s.y << "]";
return o;
}
...
然后你使用的時候可以這樣寫:class Screen s; cout << s << endl;
這樣寫的好處就是你把變量當成普通的結構體或者類變量用就行,而且效率很高。

TA貢獻1871條經驗 獲得超8個贊
這是c++相對于c新引入的一個概念——引用
引用的性質基本和指針一樣。
在平時寫函數的時候,假如你在調用的時候傳了一個參數v而沒用“引用”或者“指針”,那么你寫的函數里的v和主程序里的v是毫不相干的。就是函數里面把v的值變了,在函數體結束了以后,主程序里的v依然保持函數調用前的值。
但是有的時候你需要讓兩個v都改變。比如說你想寫一個swap(a,b)函數(交換a,b的值)。這個時候你用普通的傳參數的方法是不行的。要么你用指針
void swap(int *pointa,int *pointb)
要么你在函數定義的時候就申明,傳的參數是一個引用
void swap(int &a,int &b)【注:這兩個語句都是函數申明】
就我現在的編程體會來看,引用和指針基本沒有功能上的區別,唯一的區別就是在函數體里面使用的時候指針有指針的一套賦值、取類成員的方法,而引用的使用方法基本和一般變量一樣
- 5 回答
- 0 關注
- 5536 瀏覽
添加回答
舉報