【问题标题】:when to pass function arguments by reference and when by address?何时通过引用传递函数参数,何时通过地址传递?
【发布时间】:2010-09-13 17:08:47
【问题描述】:

谁能用一些例子解释一下什么时候通过引用调用函数更好,什么时候通过地址调用更好?

【问题讨论】:

  • 你不是指引用和价值吗?

标签: c++ pointers function reference


【解决方案1】:

这已经讨论过了。见Pointer vs. Reference

【讨论】:

    【解决方案2】:

    尽可能使用引用将参数传递给函数。 通过引用传递参数消除了它们为 NULL 的机会。 如果您希望可以将 NULL 值传递给函数,请使用指针。

    【讨论】:

    • 还有 boost::optional,它允许传递无效值,而不必使用指针或表示 Empty 的特殊值。
    【解决方案3】:

    一个很好的约定是:

    • 当对象可能被函数操作(副作用或作为输出)时,通过指针传递对象。
    • 通过 const 引用传递所有其他对象

    这让调用者非常清楚,只需最少的文档和零性能成本,哪些参数是 const 或不是。

    您也可以将其应用于原始类型,但是否需要对非输出参数使用 const 引用存在争议,因为它们显然是按值传递的,不能充当函数的输出以任何方式(对于直接类型 - 当然不是指针/引用)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-07
      • 2015-04-23
      • 1970-01-01
      相关资源
      最近更新 更多