在c ++线程中,初始化引用

时间:2010-01-19 22:35:01

标签: c++ reference

我遇到过以下代码,好吧,不完全但很接近。 兴趣点是(严重缩写的代码)中的第二行。 为什么必须初始化someReference'omeseReference'?其他则可以使用。运算符而不是 - > ? ptr这个一样好,不是吗? (它在线程方法中,如果这有任何区别)

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

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

 // some other code
}

3 个答案:

答案 0 :(得分:3)

引用始终需要在声明时初始化(除非它们是外部的)。它们在一生中始终与一个物体联系在一起。这确保了引用(与普通指针不同)(理论上)永远不会是NULL,因为它必须引用某人。分配给引用分配给引用者。

答案 1 :(得分:2)

是; ptr这也一样好。我想,风格很重要。考虑到你发布的内容,它确实看起来有点多余,但我会给原作者一个怀疑,即在完整的例子中它是有意义的。

答案 2 :(得分:0)

它不必做任何与线程有关的事情,因此无法解释你给出的代码片段