提问人:Niko Gamulin 提问时间:9/27/2008 最后编辑:demongolemNiko Gamulin 更新时间:6/29/2011 访问量:735
何时通过引用传递函数参数,何时通过地址传递函数参数?
when to pass function arguments by reference and when by address?
答:
3赞
efotinis
9/27/2008
#1
这已经讨论过了。请参阅指针与引用。
2赞
Dror Helper
9/27/2008
#2
尽可能使用引用将参数传递给函数。 通过引用传递参数可消除它们为 NULL 的可能性。 如果希望可以将 NULL 值传递给函数,请使用指针。
评论
0赞
efotinis
9/27/2008
还有 boost::optional,它允许传递无效值,而不必使用指针或表示 Empty 的特殊值。
2赞
Tyler
9/28/2008
#3
一个很好的约定是:
- 每当函数可能操纵对象(副作用或作为输出)时,通过指针传递对象。
- 通过常量引用传递所有其他对象。
这使得调用者非常清楚,只需最少的文档和零性能成本,哪些参数是常量的,哪些参数不是常量的。
您也可以将其应用于基元类型,但对于是否需要对非输出参数使用 const 引用是值得商榷的,因为它们显然是按值传递的,并且不能以任何方式充当函数的输出(当然,对于直接类型 - 不是指针/引用)。
评论