可能重复:
Difference between pointer to a reference and reference to a pointer
您好,
我无法理解get(Event*& pEvent)
...它是否将对象pEvent的地址传递给pEvent
的引用。(Event*& pEvent)
...引用将作为本地范围内的存在而存在功能不是....
void classA::func()
{
Event* pEvent = NULL;
if ( get((pEvent) )
{
......//definition;
}
}
bool ClassA::get(Event*& pEvent)
{
...//definition;
}
答案 0 :(得分:0)
foo(someType& o)
表示传递对象的引用而不是对象的副本。在您的情况下,传递对Event
指针的引用。基本上这意味着函数内部的更改将使对函数调用者可见的变量进行更改。 E.g。
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
答案 1 :(得分:0)
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)
,然后你无法修改指针本身。因此,无论您在pEvent
内分配给get()
,都不会对其进行修改。