使用引用形参的优点:
在向函数传递大对象时,需要使用引用形参。虽然赋值实参对于内置数据类型的对象或者规模较小的类类型来说没有什么问题,但是对于大部分的类类型或者大型数组,它的效率就比较低了。另外,某些类类型是无法复制的。使用引用形参,函数可以直接访问实参对象,而无须复制它。
示例:
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类型的,而且实参的类型和形参的类型应当一致。