2012-10-07 32 views

回答

1

通话按值:参数的副本传递给函数

调用参考:没有多余的副本,来电者的变量被直接传递。

主要区别在于通过值范例调用一个额外的不必要的副本...除非被调用者需要修改该变量并且您不希望更改,否则应始终使用call be reference(或const引用)给你的呼叫者的变量...

+0

我看起来很好。 –

+0

是的。 '除非'这个词让我有点困惑。 – Mahesh

+0

@Mahesh,除非xplained ::考虑函数A()具有变量foo =“india”,请考虑函数A()调用函数B(),其中B执行一些字符串操作并修改字符串。但是函数A需要保持其字符串不变。在这种情况下,必须创建一个字符串副本,B可以在本地工作..所以字符串必须按值传递... – hjindal

0

通过值调用会创建一个传递给该函数的参数的副本 - 因此对于可能会产生大量开销的大对象。它也会阻止你对函数内部的参数进行任何更改,因为它们只会在副本中反映出来。通过引用调用传递对象的引用,因此可以对该对象进行更改 - 除非您通过const引用传递。