引用变量中的接收对象

Receiving object in the reference variable

本文关键字:对象 变量 引用      更新时间:2023-10-16

可能的重复项:
指向引用的指针和指向指针的引用之间的区别

你好 我无法理解get(Event*& pEvent)...它是否将对象 pEvent 的地址传递给 pEvent 的引用 ..(Event*& pEvent)......引用将作为函数中的本地范围存在,不是吗......

void classA::func()
{
 Event* pEvent = NULL;
  if ( get((pEvent) )
  {
   ......//definition;
  }
}
bool ClassA::get(Event*& pEvent)
{
 ...//definition;
}

foo(someType& o)表示传递对象的引用而不是对象的副本。在您的情况下,将传递对Event指针的引用。基本上,这意味着函数内部的更改将使对正在传递的变量的更改对函数的调用者可见。例如

void get(Event* e)
{
   e = null;
}
void get2(Event*& e)
{
   e = null;
}

如果您致电他们:

Event *e = new Event();
get(e);
// e has not changed
get2(e);
// e is null now

get(Event*& pEvent)表示通过引用接收指针pEvent。所以现在指针本身可以在函数内部修改。

p = &obj;  // p points to obj
get(p);  // p = pEvent is modified to 0
// now outside p points to '0'

如果它getEvent(Event* pEvent),那么你不能修改指针本身。因此,无论您在get()内部分配给pEvent什么,都不会对其进行修改。