为了账号安全,请及时绑定邮箱和手机立即绑定

在C ++中通过引用传递指针是否有好处?

在C ++中通过引用传递指针是否有好处?

C++ C
LEATH 2019-07-29 10:11:41
在C ++中通过引用传递指针是否有好处?在C ++中通过引用传递指针有什么好处?最近,我看到一些例子选择通过指针传递函数参数而不是通过引用传递。这样做有好处吗?例:func(SPRITE *x);随叫随到func(&mySprite);与func(SPRITE &x);随叫随到func(mySprite);
查看完整描述

3 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

一个指针可以接收一个NULL参数,一个参数参数不能。如果您有可能想要传递“无对象”,则使用指针而不是引用。


此外,通过指针传递允许您在调用站点显式地查看对象是通过值还是通过引用传递:


// Is mySprite passed by value or by reference?  You can't tell 

// without looking at the definition of func()

func(mySprite);


// func2 passes "by pointer" - no need to look up function definition

func2(&mySprite);


查看完整回答
反对 回复 2019-07-29
?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

艾伦·霍鲁布的“足够的足球射门”列出了以下两条规则:

120. Reference arguments should always be `const`121. Never use references as outputs, use pointers

他列举了为什么将引用添加到C ++的几个原因:

  • 它们是定义复制构造函数所必需的

  • 它们是操作员超载所必需的

  • const 引用允许您在避免复制的同时具有按值传递的语义

他的主要观点是参考不应该用作“输出”参数,因为在呼叫站点没有指示参数是参考还是值参数。所以他的规则是只使用const引用作为参数。

就个人而言,我认为这是一个很好的经验法则,因为当参数是输出参数时它会更清楚。然而,虽然我个人同意这一点,但我确实允许自己受到团队中其他人的意见的影响,如果他们争论输出参数作为参考(一些开发人员非常喜欢它们)。


查看完整回答
反对 回复 2019-07-29
  • 3 回答
  • 0 关注
  • 609 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信