在形参表中以符号“&”开始的参数即为引用参数。如果一个形参是引用参数,调用部位将把实参的地址传递给子程序。子程序可以改变传递给引用参数的任何实参,因为子程序操作的是真正的变量,而不是它的副本。
一般情况下,对于任意一个类A,如果程序员不显示的声明和定义上述函数,C++编译器将会自动的为A产生4个public inline 的默认函数,这时候就用赋值参数。
需要改变实参的值,比如swap()。参数是引用时,函数接收的是实参的左值而不是值的拷贝。这意味着函数知道实参在内存中的位置,因而能够改变它的值或取它的地址。
扩展资料:
注意事项
1、如果不主动编写拷贝构造函数和赋值函数,编译器将以“位拷贝”的方式自动生成缺省的函数。倘若类中含有指针变量,那么这两个缺省的函数就隐含了错误。以类String的两个对象a,b为例,假设a.m_data的内容为“hello”,b.m_data的内容为“world”。
2、拷贝构造函数和赋值函数非常容易混淆,常导致错写、错用。拷贝构造函数是在对象被创建时调用的,而赋值函数只能被已经存在了的对象调用。
如果一个参数可能在函数中指向不同的对象,或者这个参数可能不指向任何对象,则必须使用指针参数 。引用参数的一个重要用法是它允许在有效地实现重载操作符的同时,还能保证用法的直观性。
参考资料来源:百度百科-引用参数
参考资料来源:百度百科-赋值函数
就是说函数可以用引用参数输入值,也可以用引用参数把结果带出函数
一般局部变量不是函数结束后就释放了么
比如:
void fun(a,b)
{ a=a*b;}
那跳出fun函数后a,b值就释放了,必须用return语句返回a的值。
如果用引用参数:
void fun(&a,&b)
{ a=a*b;}
void main()
{ int a,b; fun(&a,&b);}
引用a参数,这样在fun函数中进行的运算,不用return语句修改的a值就可以带出fun函数