如何在C ++中将指针转换/转换为引用


Answers:


209

这样称呼它:

foo(*ob);

请注意,按照您的问题标题中的建议,此处没有强制转换。我们所做的只是取消了指向对象的指针,然后将该对象传递给函数。


25
@Ricobob这就是经常发生的事情。可以轻松理解的简单问题的答案通常会赢得很多支持。对于棘手的问题,冗长而复杂的答案通常很少投票,因为选民无法轻易判断出功绩。至于代表,由于代表上限,我对此一无所获。;-)但我衷心同意。我希望能得到更多代表的复杂答案。
David Heffernan'4

@DavidHeffernan是的,这似乎是个问题-我想这对MetaSO来说是个问题-如果有人还没有提出来的话。
黎波波

4
这会创建的副本ob,还是只是将指针转换(如果没有转换)到引用?如果obnullptr呢?
Drew Noakes 2014年

5
@Drew它只是取消引用指针。没有副本。没有转换。没有演员 然后将该对象通过引用传递给该函数。如果该点为空,则为错误。
David Heffernan 2014年


41
foo(*ob);

您不需要强制转换,因为它是相同的Object类型,只需要取消引用即可。


猜测和增加很多...通常不是一个好的答案的格式(即使在这种情况下它是正确的),这可能就是为什么你要投下赞成票的原因。
KillianDS

5
bhhaaa,我加上了“我猜”,因为它使我至少写了30个字符。这也是我添加“ ...........”的方法
Roee Gavirel

10
@RoeeGavirel我是您的第一个投票者,因为我觉得投票表决太苛刻了。FWIW您可以超过30个字符的限制,但是添加一个HTML注释<!----------------------------->我的第一个版本的答案!我对您的答案的编辑显示了如何。
David Heffernan

这些天,没有解释的仅提供代码的答案就皱眉了。
基思M

1
@KeithM-这是一个随机注释,为-1。答案是在大约6年前给出的,这个问题并没有要求“为什么”,而只是要求“如何”。但是可以肯定的是,我将添加一个解释。
罗伊·加维雷尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.