【问题标题】:Call by value, reference and name [duplicate]按值,引用和名称调用[重复]
【发布时间】:2012-09-28 00:26:24
【问题描述】:

可能重复:
Pass by Reference / Value in C++

我想知道按值/引用/名称调用之间有什么区别。为什么使用一个比另一个更有益?

【问题讨论】:

标签: c++ reference callbyname


【解决方案1】:

按值调用:将参数的副本传递给函数

call be reference:不做额外的拷贝,直接传递调用者的变量。

主要区别是在按值调用范式中创建了一个额外的不必要的副本...您应该始终使用调用作为引用(或常量引用),除非被调用者需要修改变量并且您不希望更改你的调用者的变量...

【讨论】:

  • 是的。 unless 这个词让我有点困惑。
  • @Mahesh,除非 xplained:: 考虑具有变量 foo = "india" 的函数 A(),考虑函数 A() 调用函数 B(),其中 B 执行一些字符串操作并修改细绳。但是函数 A 需要保持其字符串完整。在这种情况下,必须制作字符串的副本,B 可以在其上本地工作.. 这样字符串必须按值传递...
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-15
    • 2013-12-15
    • 2012-11-28
    • 2015-06-07
    • 2017-02-07
    • 2013-10-02
    • 2020-03-19
    相关资源
    最近更新 更多