现在的位置: 首页 > 综合 > 正文

引用,数值,指针的对象传递

2013年12月09日 ⁄ 综合 ⁄ 共 796字 ⁄ 字号 评论关闭

1.通过引用传递对象

       通过引用(介于类型名和参数名之间的&标明“通过引用传递”)传递对象是传递对象给函数的最普通方法——即不是对象的拷贝也不是指向对象的指针,而是对象本身的另外一个名字。因此在此对象上发生的任何一种东西都会在对象上同样地发生。对const的引用在精神实质上和通过数值传递是类似的(但有一个附加的限制:它仅仅能检查该对象,不能转变该对象。这意味着它们传递的对象将不会被修改),但它能被更加有效得多地实现。

2.通过数值传递对象

        在某些情况下,通过数值传递对象可能是危险的。通过对const的引用来传递对象经常要比通过数值传递它们好。例如,假如目标类型是一个抽象基类,通过数值传递将不能工作,并且假如参数的类中有派生类,它能导致运行时的错误行为。然而假如参数的类中保证没有派生类,并且假如正被调用的函数需要一个局部拷贝和它一块工作,那么通过数值传递可能是有用的。通过数值传递对象是原对象的一个拷贝,发生在此对象上的任何变化都不会反应到原对象上。

3.通过指针传递对象

        通过指针传递对象,最流行的方法是通过引用传递和通过auto_ptr传递。当调用程序想保持对象的所有权时,我们就使用通过引用传递(即,当在调用返回给调用程序以后调用程序想访问该对象时)。当调用程序想把对象的所有权转移给被调用的子程序时,我们就使用通过auto_ptr传递(即,当在被调用子程序返回到调用程序以前调用程序就想使该对象被删除)。假如目的是为调用程序保持对象的所有权,我们一般就应该使用通过引用传递。假如目的是为被调用子程序获得对象的所有权,我们就应该使用通过auto_ptr传递。大约仅有的应该使用通过指针传递的条件有两点:

        (1)当调用程序应该保持所有权时;

       (2)当被调用子程序需要把“什么也没有传递”(即,NULL指针)处置为一个有效的输入时。

抱歉!评论已关闭.