何时通过引用传递函数参数以及何时通过地址?

何时通过引用传递函数参数以及何时通过地址?

问题描述:

任何人都可以用一些例子来解释什么时候最好通过引用来调用函数,什么时候最好通过地址来调用?何时通过引用传递函数参数以及何时通过地址?

+0

您是不是指参考和价值? – 2008-09-27 15:21:41

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

+0

还有boost :: optional,它允许传递一个无效值,而不必使用指针或一个表示Empty的特殊值。 – efotinis 2008-09-27 15:35:28

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

一个很好的约定是:

  • 通行证由指针对象每当他们可以被操纵(副作用或作为输出)通过的功能。
  • 通过所有其他对象由const引用

这使调用者非常清楚,文档最少,性能成本最低,哪些参数是常量或不是。

您也可以将其应用于基元类型,但是您是否需要将const引用用于非输出参数值得商榷,因为它们显然是按值传递的,并且不能作为函数以任何方式(对于直接类型 - 当然不是指针/引用)。