如何在C++中转换/转换指向引用

Dew*_*rld 134 c++ pointers casting reference type-conversion

如何将指针(Object *ob)传递给原型的函数void foo(Object &)

Dav*_*nan 188

像这样称呼它:

foo(*ob);
Run Code Online (Sandbox Code Playgroud)

请注意,此处没有正在进行的转换,如问题标题中所示.我们所做的就是取消引用指向该对象的指针,然后将该指针传递给该函数.

  • @Ricobob这就是SO经常发生的事情.对易于理解的简单问题的回答通常会获得大量的选票.对棘手问题的长而复杂的答案通常很少得到赞成,因为选民不能轻易判断优点.至于代表,由于代表上限我没有得到任何结果.;-)但我衷心同意.我希望复杂的答案能获得更多的代表. (24认同)
  • @Drew它只是取消引用指针.没有副本.没有转换.没有演员.然后通过引用函数传递该对象.如果该点为空则为错误. (5认同)
  • 这会创建一个`ob`的副本,还是仅仅转换(如果没有转换)指向引用的指针?如果`ob`是`nullptr`怎么办? (4认同)
  • **请注意:**如果您想获得引用而不传递给函数,请像这样使用它:`Object& objref = *ob;` (2认同)

Roe*_*rel 40

foo(*ob);
Run Code Online (Sandbox Code Playgroud)

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

  • @RoeeGavirel我是你的第一个选民,因为我觉得这是一种苛刻的追随者.FWIW你可以超过30个字符限制但添加HTML评论<!----------------------------->我做了我的第一个版本答案!我对你的答案的编辑显示了如何. (10认同)
  • bhhaaa,我添加了"我猜",因为它让我写了至少30个字符.这也是我添加"..........."的方式 (5认同)
  • @KeithM - 这是一个随机评论和 -1。答案是在大约 6 年前给出的,问题也没有问“为什么”,它只问“如何”。但可以肯定的是,我会添加一个解释。 (2认同)