2010-01-19 36 views
1

我碰到以下代码,好吧,不完全,但密切。 兴趣点是(严重缩写代码)中的第二行。 为什么要初始化someReference'someReference'?其他则可以使用。运算符而不是 - >? ptr这是一样好,不是吗? (它的线程方法中,如果有什么差别)(除非它们是外部的)他们声明时里面的c + +线程,初始化参考

// this line, why? 
SomeClass & someReference(*ptrThis); 

unsigned SomeClass::someThread(void *ptr) 
{ 
SomeClass *ptrThis = reinterpret_cast<SomeClass*>(ptr); 
SomeClass & someReference(*ptrThis); 

// some other code 
} 

回答

3

参考总是需要被初始化。它们在整个生命周期内都只限于一个物体。这确保了与普通指针不同的引用可以(理论上)永远不会是NULL,因为它必须引用某人。分配给引用分配给引用者。

+1

+1,同时也可以防止代码试图释放与对象相关的内存什么的代码片段了。 – 2010-01-19 22:42:26

2

是; ptrThis也一样好。我想,风格问题。这看起来有点多余,因为你已经发布了一些内容,但是我会给原作者一个怀疑的好处,那就是在整个示例中它是有意义的。

0

它没有做相关的任何线程,因此不能解释从你所赐给