使用引用形參的優點:
在向函數傳遞大對象時,需要使用引用形參。雖然賦值實參對于內置數據類型的對象或者規模較小的類類型來說沒有什么問題,但是對于大部分的類類型或者大型數組,它的效率就比較低了。另外,某些類類型是無法復制的。使用引用形參,函數可以直接訪問實參對象,而無須復制它。
示例:
bool isShorter(const string &str1,const string &str2)
{
return str1.size()<str2.size();
}
由于string對象可能非常的長,我們希望避免復制操作。
如果使用引用形參的唯一目的是避免復制形參,則應將形參定義為const引用。
使用引用形參應該注意的:
int incr(int &val)
{
return ++val;
}
void main(void)
{
short v1=1;
const int v2=10;
int v3=20;
incr(v1); //錯誤,v1不是int
incr(v2); //錯誤,v2是const
incr(v3); //正確
incr(10); //錯誤
}
所以,調用非const類型的引用形參,實參必須不是const類型的,而且實參的類型和形參的類型應當一致。