函数参数是对象的情况

来源:百度知道 编辑:UC知道 时间:2024/06/27 10:01:15
是否一定要写成引用的形式
如:f(A&object)

写成类对象的形式可以吗
如:f(A a); //A为类名
这种形式很少见到啊
实参的左值指的是什么

不是必须的,根据自己的要求来定义函数
就用f(A a)函数举例:
定义函数f(A a);调用时为 f(m);相当与把m赋予a;左值就是a
另外f(A& a)与f(A a)比有两个好处:1是节省空间开销,引用不占用内存空间,它仅仅是语言发明者的一个技巧。 2是加快访问速度,按值传递时就像上面的例子m赋予a时候,要调用a的复制构造函数,开销较大,这点挺难理解的。
《C++ coding standard》对这部分介绍的挺好的,忘了是那几条了。

引用会改变原值

把参数声明成引用,实际上改变了缺省的按值传递参数的传递机制.在按值传递时,函数操纵的是实参的本地拷贝;当参数是引用时,函数接收的是实参的左值而不是值的拷贝,这意味着函数知道实参在内存中的位置因而能够改变它的值或取它的地址.

----------------------下面插入引用的一些相关-----------------------------------
----------------------------------------------------------------------------------------------
引用reference ,有时候又称为别名alias .它可以用作对象的另一个名字,通过引用,我们可以间接地操纵对象.使用方式类似于指针,但是不需要指针的语法.在实际的程序中引用主要被用作函数的形式参数——通常将类对象传递给一个函数

引用类型由类型标识符和一个取地址操作符来定义,引用必须被初始化.

一旦引用已经定义,它就不能再指向其他的对象.这是它为什么必须要被初始化的原因.
例如下列的赋值不会使refVal指向min_val,而是会使refVal指向的对象ival的值被设置为min_val的值.
int &refVal=ival
int min_val = 0;
// ival被设置为min_val的值
// refVal并没有引用到min_val上
refVal = min_val; //最后使ival变为0

引用的所有操作实际